Вопрос

Все,

Я могу сбросить все свои элементы формы, используя следующий синтаксис jQuery:

('#myform')[0].reset();

Как я могу изменить это, чтобы исключить сброс значений "поле выбора"?

Спасибо

Это было полезно?

Решение

Для всех..

функция сброса не устанавливает все в " (пустая строка)

он сбрасывается до их начальных значений ..(хранится в атрибуте value или выбранной опции и т.д.)

Если вы хотите сохранить функции сброса по умолчанию, то вам следует

  1. получить все <select> элементы
  2. получите их текущие выбранные значения
  3. сбросьте форму, как вы это делаете в данный момент
  4. повторно установите выбранный

пример:

<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>

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top