обновлено в марте 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
часть селектора плюс кеш элемента формы, это должно сделать его наиболее эффективным ответом здесь.
Этот ответ может все еще иметь некоторые недостатки, если люди по умолчанию для выбранных элементов не являются опцией, которая имеет пустое значение, но она, безусловно, настолько универсальна, насколько это возможно, и это нужно будет обрабатывать в каждом конкретном случае. основа.