zaktualizowany w marcu 2012 r.
Dwa lata po tym, jak pierwotnie odpowiedziałem na to pytanie, wróciłem, aby przekonać się, że właściwie zmieniło się to w wielki bałagan. Wydaje mi się, że nadszedł czas, aby do niego wrócić i naprawdę poprawić swoją odpowiedź, ponieważ jest ona najbardziej pozytywnie oceniana + zaakceptowana.
Dla przypomnienia, odpowiedź Titi jest błędna, ponieważ nie jest to prośba oryginalnego plakatu - prawdą jest, że możliwe jest zresetowanie formularza przy użyciu natywnej metody reset (), ale to pytanie próbuje usunąć formularz z zapamiętanego wartości, które pozostałyby w formularzu, jeśli zresetujesz go w ten sposób. Dlatego potrzebny jest reset „ręczny”. Zakładam, że większość osób znalazła się w tym pytaniu z wyszukiwarki Google i naprawdę szuka metody reset (), ale to nie działa w konkretnym przypadku, o którym mówi OP.
Moja pierwotna odpowiedź brzmiała:
// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
Co może działać w wielu przypadkach, w tym dla PO, ale jak wskazano w komentarzach i innych odpowiedziach, wyczyści elementy radia / pola wyboru z wszelkich atrybutów wartości.
Bardziej poprawna odpowiedź (ale nie doskonała) to:
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
Używanie :text
, :radio
itd selektorów przez siebie jest uważane za złą praktyką przez jQuery, ponieważ kończy się oceny na *:text
co sprawia, że znacznie dłużej niż powinno. Wolę podejście z białej listy i żałuję, że nie użyłem go w mojej oryginalnej odpowiedzi. W każdym razie, podając input
część selektora oraz pamięć podręczną elementu formularza, powinno to uczynić ją najlepszą odpowiedzią tutaj.
Ta odpowiedź może nadal mieć pewne wady, jeśli domyślne ustawienie wybranych elementów przez ludzi nie jest opcją, która ma pustą wartość, ale z pewnością jest tak ogólne, jak się da, i należy to rozpatrywać indywidualnie .
not()
jeśli twój formularz ma jakieś ukryte dane wejściowe.