У меня есть форма со стандартной кнопкой сброса, закодированной таким образом:
<input type="reset" class="button standard" value="Clear" />
Проблема в том, что указанная форма имеет многоэтапную сортировку, поэтому, если пользователь заполняет этап и затем возвращается позже, «запомненные» значения для различных полей не будут сброшены при нажатии кнопки «Очистить».
Я думаю, что присоединение функции jQuery для зацикливания всех полей и очистки их «вручную» поможет. Я уже использую jQuery в форме, но только набираю скорость, и поэтому я не уверен, как это сделать, за исключением индивидуальной ссылки на каждое поле по идентификатору, что не очень эффективно.
ТИА за любую помощь.
not()
if, если в вашей форме есть скрытые входные данные.Ответы:
обновлено в марте 2012 г.
Итак, спустя два года после того, как я первоначально ответил на этот вопрос, я возвращаюсь, чтобы увидеть, что он в значительной степени превратился в большой беспорядок. Я чувствую, что пришло время вернуться к нему и сделать мой ответ действительно правильным, так как он получил наибольшее количество голосов + принят.
Напомним, что ответ Тити неверен, так как это не то, о чем просил оригинальный автор, - верно, что можно сбросить форму, используя собственный метод reset (), но этот вопрос пытается очистить форму от запомненной. значения, которые останутся в форме, если вы сбросите его таким образом. Вот почему требуется «ручной» сброс. Я предполагаю, что большинство людей ответили на этот вопрос из поиска Google и действительно ищут метод reset (), но он не работает для конкретного случая, о котором говорит OP.
Мой оригинальный ответ был такой:
Это может работать во многих случаях, в том числе для OP, но, как указано в комментариях и других ответах, элементы радио / флажков будут удалены из любых атрибутов значения.
Более правильный ответ (но не идеальный):
Используя
:text
,:radio
и т.д. селекторы самого по себе считается плохой практикой , с помощью JQuery , как они в конечном итоге , вычисляемые ,*:text
что делает его занять гораздо больше времени , чем это необходимо. Я предпочитаю подход белого списка и хотел бы использовать его в своем первоначальном ответе. В любом случае, указавinput
часть селектора плюс кэш элемента формы, это должно сделать его наиболее эффективным ответом здесь.Этот ответ может все еще иметь некоторые недостатки, если люди по умолчанию для элементов select не являются опцией, которая имеет пустое значение, но она, безусловно, настолько универсальна, насколько это возможно, и ее необходимо будет обрабатывать в каждом конкретном случае. ,
источник
.val('')
все значения сбрасываются,''
даже если эти значения используются в переключателях и флажках. Поэтому, когда я запускаю приведенный выше код, я теряю ценную информацию из формы, а не только то, что вводит пользователь.От http://groups.google.com/group/jquery-dev/msg/2e0b7435a864beea :
настройка
myinput.val('')
может не эмулировать «сброс» 100%, если у вас есть такой ввод:Например, при вызове
myinput.val('')
ввода со значением по умолчанию 50 будет задана пустая строка, а при вызовеmyform.reset()
будет сброшено начальное значение 50.источник
Есть большая проблема с принятым ответом Паоло. Рассматривать:
В
.val('')
строке также будут удалены всеvalue
назначенные флажки и переключатели. Так что если (как и я) вы делаете что-то вроде этого:Использование принятого ответа превратит ваши входные данные в:
К сожалению, я использовал это значение!
Вот модифицированная версия, в которой будут храниться ваш флажок и значения радио:
источник
select
элементах. Можете ли вы это исправить?:text
,:password
и т.д. селекторы самих по себе без указанияinput
части, в противном случае она принимает значение ,*:text
которое проходит через каждый элемент в документе , а не только<input>
теги сinput:text
#myFormId
контекста, передаваемого в качестве второго аргумента$()
- то есть$(':input', '#context')
- это идентично$('#context').filter(':input')
Плагин jQuery
Я создал плагин jQuery, чтобы я мог легко использовать его везде, где мне это нужно:
Так что теперь я могу использовать его, позвонив:
источник
.prop("checked", false)
? stackoverflow.com/questions/5874652/prop-vs-attrОчистка форм немного сложна и не так проста, как кажется.
Предлагаем вам использовать плагин формы jQuery и использовать его функции clearForm или resetForm . Он заботится о большинстве угловых случаев.
источник
document.getElementById ( 'FRM'). сброс ()
источник
Я обычно делаю:
или
источник
Вот кое-что, чтобы вы начали
Конечно, если у вас есть флажки / переключатели, вам нужно изменить это, чтобы включить их и установить
.attr({'checked': false});
Отредактируйте ответ Паоло более кратко. Мой ответ более многословный, потому что я не знал о
:input
селекторе и не думал просто удалить проверенный атрибут.источник
Подумайте об использовании плагина проверки - это здорово! И сброс формы прост:
источник
Я считаю, что это работает хорошо.
источник
в принципе ни одно из предложенных решений не радует меня. как указали несколько человек, они очищают форму, а не сбрасывают ее.
Тем не менее, есть несколько свойств JavaScript, которые помогают:
они хранят значение, которое поле имело при загрузке страницы.
написание плагина jQuery теперь тривиально: (для нетерпеливых ... вот демо http://jsfiddle.net/kritzikratzi/N8fEF/1/ )
плагин-код
Применение
некоторые заметки ...
$( "#container" ).resetValue()
не сработает. всегда используйте$( "#container :input" )
вместо этого.источник
Вы можете обнаружить, что это на самом деле легче решить без jQuery.
В обычном JavaScript это так просто:
Я стараюсь всегда помнить, что хотя мы используем jQuery для улучшения и ускорения нашего кодирования, иногда это на самом деле не быстрее. В этих случаях часто лучше использовать другой метод.
источник
Я немного изменил хорошее решение Фрэнсиса Льюиса . То, что его решение не делает, это устанавливает выпадающий список пустым. (Я думаю, что, когда большинство людей хотят «очистить», они, вероятно, хотят, чтобы все значения были пустыми.) Это делает это с
.find('select').prop("selectedIndex", -1)
.источник
Я обычно добавляю скрытую кнопку сброса в форму. когда нужно просто: $ ('# reset'). click ();
источник
Модификация наиболее востребованного ответа для
$(document).ready()
ситуации:источник
Просто используйте
jQuery Trigger event
так:Это сбросит флажки, радиокнопки, текстовые поля и т. Д. По сути, это переводит вашу форму в состояние по умолчанию. Просто поместите
#ID, Class, element
внутрьjQuery
селектора.источник
это сработало для меня, ответ Pyrotex не «сбросил выбор полей, взял его, вот» мое редактирование:
источник
Я использую решение Paolo Bergantino, которое отлично, но с небольшими изменениями ... Специально для работы с именем формы вместо идентификатора.
Например:
Теперь, когда я хочу использовать это может сделать
Как видите, это работает с любой формой, и поскольку я использую стиль CSS для создания кнопки, страница не будет обновляться при нажатии. Еще раз спасибо Паоло за ваш вклад. Единственная проблема, если у меня есть значения по умолчанию в форме.
источник
Я использовал решение ниже, и оно работало для меня (смешивая традиционный javascript с jQuery)
источник
Я просто посредник в PHP и немного ленив, чтобы погрузиться в новый язык, такой как JQuery, но разве следующее простое и элегантное решение не подходит?
Не вижу причины, почему бы не иметь две кнопки отправки, просто для разных целей. Тогда просто:
Вы просто переопределяете свои значения обратно на то, что должно быть по умолчанию.
источник
Метод, который я использовал в довольно большой форме (более 50 полей), состоял в том, чтобы просто перезагрузить форму с помощью AJAX, по сути сделать обратный вызов серверу и просто вернуть поля с их значениями по умолчанию. Это гораздо проще, чем пытаться захватить каждое поле с помощью JS, а затем установить для него значение по умолчанию. Это также позволило мне хранить значения по умолчанию в одном месте - код сервера. На этом сайте были также различные настройки по умолчанию, в зависимости от настроек учетной записи, и поэтому мне не пришлось беспокоиться об их отправке в JS. Единственная небольшая проблема, с которой мне пришлось столкнуться, - это некоторые предполагаемые поля, которые требовали инициализации после вызова AJAX, но не имели большого значения.
источник
Все эти ответы хороши, но самый простой способ сделать это с помощью фальшивого сброса, то есть вы используете ссылку и кнопку сброса.
Просто добавьте немного CSS, чтобы скрыть кнопку реального сброса.
А потом по своей ссылке добавляешь следующее
Надеюсь это поможет! A.
источник
источник
Здесь с обновлением для флажков и выбирает:
источник
У меня была та же проблема, и пост Паоло помог мне, но мне нужно было кое-что исправить. Моя форма с идентификатором advancedindexsearch содержит только поля ввода и получает значения из сеанса. По какой-то причине следующее не работает для меня:
Если после этого я поставил предупреждение, я увидел, что значения были удалены правильно, но потом они снова были заменены. Я до сих пор не знаю, как и почему, но следующая строчка сработала для меня:
источник
Ответ Паоло не учитывает выбор даты, добавьте это в:
источник
Я немного улучшил первоначальный ответ Паоло Бергантино
Таким образом, я могу передать любой элемент контекста в функцию. Я могу сбросить всю форму или только определенный набор полей, например:
Кроме того, значения входов по умолчанию сохраняются.
источник
вот мое решение, которое также работает с новыми типами ввода html5:
источник
break
нижеcheckbox
иradio
случаев. Там нет необходимости в его нынешнем положении.В дополнение к принятому ответу, если вы используете плагин SELECT2, вам нужно вызвать скрипт select2 для внесения изменений во все поля select2:
источник
источник