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:
// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
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:
function resetForm($form) {
$form.find('input:text, input:password, input:file, select, textarea').val('');
$form.find('input:radio, input:checkbox')
.removeAttr('checked').removeAttr('selected');
}
// to call, use:
resetForm($('#myform')); // by id, recommended
resetForm($('form[name=myName]')); // by name
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 la input
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 .
not()
si su formulario tiene entradas ocultas.