оновлено березень 2012 року.
Отож, через два роки після того, як я спочатку відповів на це запитання, я повернувся до переконання, що він значною мірою перетворився на великий безлад. Я вважаю, що прийшов час повернутися до нього і зробити свою відповідь по-справжньому правильною, оскільки вона є найбільш прихильним + прийнятим.
Для запису відповідь Тіті неправильна, оскільки це не те, про що вимагав оригінальний плакат - це правильно, що можна скинути форму за допомогою нативного методу скидання (), але це питання намагається очистити форму від пам'яті значення, які залишаться у формі, якщо ви скинете її таким чином. Ось чому потрібен «ручний» скидання. Я припускаю, що в цьому питанні більшість людей опинилися в пошуку Google і справді шукають метод скидання (), але це не працює для конкретного випадку, про який йдеться в ОП.
Моя оригінальна відповідь була така:
// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
Що може працювати в багатьох випадках, в тому числі в рамках ОП, але, як зазначено в коментарях та інших відповідях, очистить елементи радіо / прапорців від будь-яких атрибутів значення.
Більш правильна відповідь (але не досконала):
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
частину селектора плюс кеш елемента форми, це повинно зробити тут найкращу відповідь.
Ця відповідь може все-таки мати деякі недоліки, якщо за замовчуванням людей для вибраних елементів не є параметром, який має порожнє значення, але він, звичайно, такий же загальний, як і збирається отримати, і це потрібно вирішувати у кожному конкретному випадку. .
not()
якщо у вашій формі є приховані входи.