Как установить выбранный выпадающий параметр с помощью jquery в форме с несколькими выборками?

#javascript #jquery #html #jquery-ui

#javascript #jquery #HTML #jquery-пользовательский интерфейс

Вопрос:

У меня есть форма с некоторыми текстовыми вводами и выпадающими меню. Эти элементы генерируются динамически на основе пользовательского выбора на предыдущей странице, и эта динамическая генерация элементов работает нормально. Теперь, допустим, мой код выглядит так —

 <form id="myForm" >
<select id='id1'>
<option value="">Select an option</option>  
<option value="opt1">opt1</option>  
<option value="opt2">opt2</option>  
<option value="opt3">opt3</option>  
</select>  
<select id='id2'>  
    <option value="">Select an option</option>  
    <option value="Apple">Apple</option>  
    <option value="Orange">Orange</option>  
    <option value="Grape">Grape</option>  
   </select>  
</form>
  

и теперь я хотел сбросить параметр для всех пунктов выпадающего меню на первый, т.Е. — «Выбрать опцию», когда пользователь нажимает на кнопку сброса.

 <button class="reset-field" id="clearBtn">Reset</button>
  

Для этого я попытался-

 $(document).ready(function(){
 ...
  $("#clearBtn").click(function(){
  $('#myForm select').each(function(key, value) {
   $(this).val("");
  });
 });
});
  

В основном это устанавливает значение "" , но не параметр. Я имею в виду, что выбранный элемент не изменяется. Есть идеи, как мы можем установить параметр на — «Выбрать параметр».

Спасибо.

Комментарии:

1. Это должно работать нормально.. jsfiddle.net/6ewLN

Ответ №1:

 $(this)[0].selectedIndex = 0;
  

Использование селектора массива в элементе jQuery вернет указатель на фактический объект на основе DOM (а не на объект, завернутый в jQuery). Оттуда вы можете просто установить SelectedIndex равным 0 (0-й элемент в списке).

Комментарии:

1. Ошибка.. Тогда почему код OP не работал ..? $('select').val("")

2. Или просто это.SelectedIndex = 0;

3. Комментарий Майкла был правильным. просто используйте this.SelectedIndex. Пропустил это < дух />

Ответ №2:

Попробуйте использовать .text("") вместо .val("")

 $(document).ready(function(){
 ...
  $("#clearBtn").click(function(){
  $('#myForm select').each(function(key, value) {
   $(this).text("");
  });
 });
});
  

Комментарии:

1. Затем замените на .text(«Выберите параметр»);

2. при этом все остальные параметры будут удалены, в выпадающем списке будет сохранено только «Выбрать параметр», чего я не пытаюсь сделать.

Ответ №3:

(Строго говоря, это не ответ, просто мысль)

val() концепция в jQuery довольно элементарна.

Проверьте это обсуждение, где я предлагаю механизм формирования. С его помощью ваша задача может быть выполнена следующим образом

 $("#myForm").formation().value = { id1:"", id2:"" };
  

По сути, формирование вводит значение формы в виде набора имен / значений ее входных данных. Он правильно обрабатывает значения выборок, радиогрупп и флажков.

Ответ №4:

Я думаю, это то, что вы ищете:

http://jsfiddle.net/YZWTY/

 $(function(){
        $("#clearBtn").click(function(e){
         e.preventDefault();
            $("#myForm select option").each(function(){
               var a = $(this).index();
               $(this).val(a);   
              });
            $("#myForm select").val("0");
        });
});