обновлено в марте 2012 г.
Итак, спустя два года после того, как я первоначально ответил на этот вопрос, я возвращаюсь, чтобы увидеть, что он в значительной степени превратился в большой беспорядок. Я чувствую, что пришло время вернуться к нему и сделать мой ответ действительно правильным, так как он получил наибольшее количество голосов + принят.
Напомним, что ответ Тити неверен, так как это не то, о чем просил оригинальный автор, - верно, что можно сбросить форму, используя собственный метод reset (), но этот вопрос пытается очистить форму от запомненной. значения, которые останутся в форме, если вы сбросите его таким образом. Вот почему требуется «ручной» сброс. Я предполагаю, что большинство людей ответили на этот вопрос из поиска Google и действительно ищут метод reset (), но он не работает для конкретного случая, о котором говорит OP.
Мой оригинальный ответ был такой:
// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
Это может работать во многих случаях, в том числе для OP, но, как указано в комментариях и других ответах, элементы радио / флажков будут удалены из любых атрибутов значения.
Более правильный ответ (но не идеальный):
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
Используя :text
, :radio
и т.д. селекторы самого по себе считается плохой практикой , с помощью JQuery , как они в конечном итоге , вычисляемые , *:text
что делает его занять гораздо больше времени , чем это необходимо. Я предпочитаю подход белого списка и хотел бы использовать его в своем первоначальном ответе. В любом случае, указав input
часть селектора плюс кэш элемента формы, это должно сделать его наиболее эффективным ответом здесь.
Этот ответ может все еще иметь некоторые недостатки, если люди по умолчанию для элементов select не являются опцией, которая имеет пустое значение, но она, безусловно, настолько универсальна, насколько это возможно, и ее необходимо будет обрабатывать в каждом конкретном случае. ,
not()
if, если в вашей форме есть скрытые входные данные.