#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:
Я думаю, это то, что вы ищете:
$(function(){
$("#clearBtn").click(function(e){
e.preventDefault();
$("#myForm select option").each(function(){
var a = $(this).index();
$(this).val(a);
});
$("#myForm select").val("0");
});
});