jQuery - Сброс формы - Исключить поле “Выбрать”
-
18-09-2019 - |
Вопрос
Все,
Я могу сбросить все свои элементы формы, используя следующий синтаксис jQuery:
('#myform')[0].reset();
Как я могу изменить это, чтобы исключить сброс значений "поле выбора"?
Спасибо
Решение
Для всех..
функция сброса не устанавливает все в " (пустая строка)
он сбрасывается до их начальных значений ..(хранится в атрибуте value или выбранной опции и т.д.)
Если вы хотите сохранить функции сброса по умолчанию, то вам следует
- получить все
<select>
элементы - получите их текущие выбранные значения
- сбросьте форму, как вы это делаете в данный момент
- повторно установите выбранный
пример:
<script type="text/javascript">
$(document).ready(
function(){
$("#resetbutton").click(
function(){
var values = [];
var selected = $("select").each(
function(){
values.push( $(this).val());
});
this.form.reset();
for (i=0;i<selected.length;i++)
$(selected[i]).val(values[i]);
});
}
);
</script>
Другие советы
Это не jQuery, это родной javascript.[0] выводит фактический элемент DOM, так что это то же самое, что:
document.getElementById('myform').reset();
reset()
это встроенная реализация браузера, которая сбрасывает всю форму.Если вам нужно сбросить отдельные типы форм, попробуйте что-то вроде:
$('#myform :text').val('');
Вы можете увидеть все селекторы форм здесь: http://docs.jquery.com/Selectors
Вы можете выполнить ложный сброс, установив значения в пустую строку и сбросив флажки, используя ответ Дэвида (или это более полный вариант).Вы также могли бы попробовать сохранить значение каждого элемента select перед сбросом формы, а затем восстановить значения после:
var myform = $('#myform');
var selects = $('select', myform);
// Store each current value
selects.each(function() {
$(this).data('previous', $(this).val());
});
myform[0].reset();
// Restore the values
selects.each(function() {
$(this).val($(this).data('previous'));
});
По какой-то причине правильный ответ Дэвида привел к ошибке в моем Google Chrome js.Это говорит:
Неперехваченная ошибка типа:Свойство 'reset' объекта # не является функцией
...поэтому я решил попробовать немного другое решение:
- Присвоите кнопкам сброса собственного браузера атрибуты "скрытые" и установите "идентификатор".:
<input id="resetbutton" type="reset" style="visibility:hidden;" name="reset" value="reset" />
- Инициируйте событие jQuery "click" при нажатии кнопки сброса, перейдя по ссылке:
<a href="#" onclick="$('#resetbutton').click();">Reset</a>