aggiornato a marzo 2012.
Quindi, due anni dopo aver risposto inizialmente a questa domanda, torno a vedere che si è praticamente trasformato in un grande casino. Sento che è ora che torni ad esso e renda la mia risposta veramente corretta poiché è la più votata + accettata.
Per la cronaca, la risposta di Titi è errata in quanto non è ciò che il poster originale ha richiesto - è corretto che è possibile ripristinare un modulo utilizzando il metodo reset () nativo, ma questa domanda sta cercando di cancellare un modulo da ricordato valori che rimarrebbero nel modulo se lo ripristinassi in questo modo. Ecco perché è necessario un ripristino "manuale". Presumo che la maggior parte delle persone sia finita in questa domanda da una ricerca su Google e stia veramente cercando il metodo reset (), ma non funziona per il caso specifico di cui parla l'OP.
Mio risposta originale era questa:
// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
Il che potrebbe funzionare in molti casi, incluso per l'OP, ma come sottolineato nei commenti e in altre risposte, cancellerà gli elementi radio / checkbox da qualsiasi attributo di valore.
Un più corretto risposta (ma non perfetta) è:
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
Utilizzando il :text
,:radio
ecc selettori per sé è considerato cattiva pratica da jQuery come finiscono per valutare a *:text
che lo rende vuole molto più tempo del dovuto. Preferisco l'approccio della whitelist e vorrei averlo usato nella mia risposta originale. In ogni caso, specificando la input
parte del selettore, più la cache dell'elemento del modulo, questo dovrebbe renderlo la risposta con le migliori prestazioni qui.
Questa risposta potrebbe avere ancora alcuni difetti se il valore predefinito delle persone per gli elementi selezionati non è un'opzione che ha un valore vuoto, ma è certamente generico come sarà e dovrebbe essere gestito caso per caso .
not()
se il tuo modulo ha input nascosti.