Tengo un formulario con un botón de reinicio estándar codificado de esta manera:
<input type="reset" class="button standard" value="Clear" />
El problema es que dicho formulario es de varias etapas, por lo que si un usuario llena una etapa y luego regresa más tarde, los valores 'recordados' para los diversos campos no se restablecerán cuando se haga clic en el botón Borrar.
Estoy pensando que adjuntar una función jQuery para recorrer todos los campos y borrarlos 'manualmente' sería el truco. Ya estoy usando jQuery dentro del formulario, pero solo me estoy poniendo al día y no estoy seguro de cómo hacerlo, aparte de hacer referencia individualmente a cada campo por ID, lo que no parece muy eficiente.
TIA por cualquier ayuda.
not()
si su formulario tiene entradas ocultas.Respuestas:
actualizado en marzo de 2012.
Entonces, dos años después de que originalmente respondí esta pregunta, regreso para ver que se ha convertido en un gran desastre. Siento que es hora de que vuelva y haga que mi respuesta sea realmente correcta, ya que es la más votada + aceptada.
Para el registro, la respuesta de Titi es incorrecta, ya que no es lo que pedía el póster original: es correcto que sea posible restablecer un formulario utilizando el método reset () nativo, pero esta pregunta está tratando de borrar un formulario de lo recordado valores que permanecerían en el formulario si lo restablece de esta manera. Es por eso que se necesita un reinicio "manual". Supongo que la mayoría de las personas terminaron en esta pregunta de una búsqueda en Google y realmente están buscando el método reset (), pero no funciona para el caso específico del que habla el OP.
Mi respuesta original fue esta:
Lo que podría funcionar para muchos casos, incluido el OP, pero como se señaló en los comentarios y en otras respuestas, eliminará los elementos de radio / casilla de verificación de cualquier atributo de valor.
Una respuesta más correcta (pero no perfecta) es:
El uso de los
:text
,:radio
, etc. selectores de por sí se considera una mala práctica por jQuery, ya que terminan la evaluación a*:text
la que hace que sea mucho más largo de lo que debería. Prefiero el enfoque de la lista blanca y desearía haberlo usado en mi respuesta original. De todos modos, al especificar lainput
parte del selector, más el caché del elemento de formulario, esto debería convertirlo en la mejor respuesta aquí.Esta respuesta aún podría tener algunos defectos si el valor predeterminado de las personas para los elementos seleccionados no es una opción que tenga un valor en blanco, pero ciertamente es tan genérico como se va a obtener y esto debería manejarse caso por caso .
fuente
.val('')
restablece todos los valores''
incluso si estos valores se usan en botones de radio y casillas de verificación. Entonces, cuando ejecuto el código anterior, pierdo información valiosa del formulario, no solo lo que el usuario ha ingresado.Desde http://groups.google.com/group/jquery-dev/msg/2e0b7435a864beea :
la configuración
myinput.val('')
podría no emular "restablecer" al 100% si tiene una entrada como esta:Por ejemplo, llamar
myinput.val('')
a una entrada con un valor predeterminado de 50 lo establecería en una cadena vacía, mientras que llamarmyform.reset()
lo restablecería a su valor inicial de 50.fuente
Hay un gran problema con la respuesta aceptada de Paolo. Considerar:
La
.val('')
línea también borrarávalue
las asignadas a casillas de verificación y botones de radio. Entonces, si (como yo) haces algo como esto:El uso de la respuesta aceptada transformará sus entradas en:
¡Vaya! ¡Estaba usando ese valor!
Aquí hay una versión modificada que mantendrá su casilla de verificación y valores de radio:
fuente
select
elementos. ¿Puedes arreglar esto?:text
,:password
etc. selectores por sí mismos, sin especificar lainput
parte, de lo contrario, se evalúa como*:text
que pasa por cada elemento en el documento en lugar de sólo<input>
las etiquetas coninput:text
#myFormId
contexto pasado como el segundo argumento de$()
- que es$(':input', '#context')
- esta es idéntica a$('#context').filter(':input')
Complemento jQuery
Creé un complemento jQuery para poder usarlo fácilmente en cualquier lugar que lo necesite:
Entonces ahora puedo usarlo llamando:
fuente
.prop("checked", false)
? stackoverflow.com/questions/5874652/prop-vs-attrBorrar formas es un poco complicado y no tan simple como parece.
Le sugerimos que use el complemento de formulario jQuery y use su funcionalidad clearForm o resetForm . Se encarga de la mayoría de los casos de esquina.
fuente
document.getElementById ('frm'). reset ()
fuente
Yo suelo hacer:
o
fuente
Aquí hay algo para que comiences
Por supuesto, si tiene casillas de verificación / botones de opción, deberá modificar esto para incluirlos también y establecer
.attr({'checked': false});
editar La respuesta de Paolo es más concisa. Mi respuesta es más prolija porque no sabía sobre el
:input
selector, ni pensé en simplemente eliminar el atributo marcado.fuente
Considere usar el complemento de validación , ¡es genial! Y restablecer la forma es simple:
fuente
Me parece que esto funciona bien.
fuente
Básicamente, ninguna de las soluciones proporcionadas me hace feliz. Como señalaron algunas personas, vacían el formulario en lugar de restablecerlo.
Sin embargo, hay algunas propiedades de JavaScript que ayudan:
estos almacenan el valor que tenía un campo cuando se cargaba la página.
escribir un complemento jQuery ahora es trivial: (para los impacientes ... aquí hay una demostración http://jsfiddle.net/kritzikratzi/N8fEF/1/ )
código de complemento
uso
algunas notas ...
$( "#container" ).resetValue()
, no funcionará. siempre use$( "#container :input" )
en su lugar.fuente
Puede encontrar que esto es realmente más fácil de resolver sin jQuery.
En JavaScript normal, esto es tan simple como:
Intento recordar siempre que, si bien usamos jQuery para mejorar y acelerar nuestra codificación, a veces no es más rápido. En esos casos, a menudo es mejor usar otro método.
fuente
Hice una ligera variación de la buena solución de Francis Lewis . Lo que su solución no hace es establecer las selecciones desplegables en blanco. (Creo que cuando la mayoría de la gente quiere "borrar", probablemente quieren que todos los valores estén vacíos). Este lo hace con
.find('select').prop("selectedIndex", -1)
.fuente
Normalmente agrego un botón de reinicio oculto al formulario. cuando sea necesario solo: $ ('# reset'). click ();
fuente
Modificación de la respuesta más votada para la
$(document).ready()
situación:fuente
Simplemente usa el me
jQuery Trigger event
gusta así:Esto restablecerá casillas de verificación, botones de radio, cuadros de texto, etc. Esencialmente cambia su formulario a su estado predeterminado. Simplemente ponga el
#ID, Class, element
interior deljQuery
selector.fuente
esto funcionó para mí, la respuesta de pyrotex no 'restableció los campos seleccionados, tomó su, aquí' mi edición:
fuente
Estoy usando la solución Paolo Bergantino, que es genial pero con pocos ajustes ... Específicamente para trabajar con el nombre del formulario en lugar de una identificación.
Por ejemplo:
Ahora cuando quiero usarlo podría hacer
Como puede ver, esto funciona con cualquier forma, y como estoy usando un estilo CSS para crear el botón, la página no se actualizará al hacer clic. Una vez más, gracias a Paolo por su aporte. El único problema es si tengo valores predeterminados en el formulario.
fuente
Usé la solución a continuación y funcionó para mí (mezclando JavaScript tradicional con jQuery)
fuente
Soy solo un intermediario en PHP y un poco flojo para sumergirme en un nuevo lenguaje como JQuery, pero ¿no es la siguiente una solución simple y elegante?
No puedo ver una razón por la que no tengo dos botones de envío, solo que con diferentes propósitos. Entonces simplemente:
Simplemente redefine sus valores a lo que se supone que es el valor predeterminado.
fuente
Un método que utilicé en un formulario bastante grande (más de 50 campos) fue simplemente volver a cargar el formulario con AJAX, básicamente haciendo una llamada al servidor y simplemente devolviendo los campos con sus valores predeterminados. Esto es mucho más fácil que intentar tomar cada campo con JS y luego configurarlo en su valor predeterminado. También me permitió mantener los valores predeterminados en un solo lugar: el código del servidor. En este sitio, también hubo algunos valores predeterminados diferentes según la configuración de la cuenta y, por lo tanto, no tuve que preocuparme por enviarlos a JS. El único pequeño problema con el que tuve que lidiar fueron algunos campos de sugerencias que requerían inicialización después de la llamada AJAX, pero no fue un gran problema.
fuente
Todas estas respuestas son buenas, pero la forma más fácil de hacerlo es con un reinicio falso, es decir, utiliza un enlace y un botón de reinicio.
Simplemente agregue un poco de CSS para ocultar su botón de reinicio real.
Y luego en su enlace agrega lo siguiente
¡Espero que esto ayude! A.
fuente
fuente
Aquí con la actualización de casillas de verificación y selecciona:
fuente
Estaba teniendo el mismo problema y la publicación de Paolo me ayudó, pero necesitaba ajustar una cosa. Mi formulario con id advancedindexsearch solo contenía campos de entrada y obtiene los valores de una sesión. Por alguna razón, lo siguiente no funcionó para mí:
Si pongo una alerta después de esto, vi que los valores se eliminaron correctamente pero luego se reemplazaron nuevamente. Todavía no sé cómo ni por qué, pero la siguiente línea me sirvió:
fuente
La respuesta de Paolo no tiene en cuenta los recolectores de fechas, agregue esto en:
fuente
He mejorado un poco la respuesta original de Paolo Bergantino.
De esta manera, puedo pasar cualquier elemento de contexto a la función. Puedo restablecer todo el formulario o solo un determinado conjunto de campos, por ejemplo:
Además, se conservan los valores predeterminados de las entradas.
fuente
Aquí está mi solución, que también funciona con los nuevos tipos de entrada html5:
fuente
break
siguientescheckbox
y losradio
casos. No es necesario en su posición actual.Complementando la respuesta aceptada, si usa el complemento SELECT2, debe recuperar el script select2 para hacer cambios en todos los campos select2:
fuente
fuente