aktualisiert im März 2012.
Zwei Jahre, nachdem ich diese Frage ursprünglich beantwortet hatte, komme ich zurück und stelle fest, dass sie sich zu einem großen Durcheinander entwickelt hat. Ich denke, es ist an der Zeit, darauf zurückzukommen und meine Antwort wirklich richtig zu machen, da sie am besten bewertet und akzeptiert wird.
Für die Aufzeichnung ist Titis Antwort falsch, da es nicht das ist, wonach das Originalplakat gefragt hat - es ist richtig, dass es möglich ist, ein Formular mit der nativen Methode reset () zurückzusetzen, aber diese Frage versucht, ein Formular aus dem gespeicherten zu entfernen Werte, die im Formular verbleiben würden, wenn Sie es auf diese Weise zurücksetzen. Aus diesem Grund ist ein "manueller" Reset erforderlich. Ich gehe davon aus, dass die meisten Leute in dieser Frage von einer Google-Suche gelandet sind und wirklich nach der reset () -Methode suchen, aber sie funktioniert nicht für den speziellen Fall, über den das OP spricht.
Meine ursprüngliche Antwort war:
// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
Dies funktioniert möglicherweise in vielen Fällen, einschließlich des OP, aber wie in den Kommentaren und in anderen Antworten ausgeführt, werden Radio- / Kontrollkästchenelemente aus allen Wertattributen entfernt.
Eine korrektere Antwort (aber nicht perfekt) lautet:
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
Mit den :text
, :radio
usw. Wählern selbst ist schlechte Praxis von jQuery betrachtet , da sie die Bewertung am Ende zu , *:text
die es viel länger dauern , als es sollte macht. Ich bevorzuge den Whitelist-Ansatz und wünschte, ich hätte ihn in meiner ursprünglichen Antwort verwendet. Wenn Sie jedoch den input
Teil des Selektors sowie den Cache des Formularelements angeben, sollte dies die Antwort mit der besten Leistung sein.
Diese Antwort weist möglicherweise noch einige Mängel auf, wenn die Standardeinstellung für ausgewählte Elemente keine Option mit einem leeren Wert ist. Sie ist jedoch mit Sicherheit so allgemein wie möglich und muss von Fall zu Fall behandelt werden .
not()
wenn Ihr Formular versteckte Eingaben enthält.