У меня есть страница с изменяющимся количеством выпадающих списков (изменения от пользователя). Для каждого из них опция по умолчанию (индекс 0) является стандартом "Пожалуйста, выберите ###".
Мне нужно выяснить, выбрано ли ЛЮБОЙ из них, по крайней мере один.
Я нашел что-то, используя jQuery.index, но я не уверен, что это ожидаемое поведение или случайность.
<select id=dd1 class=dropdown>
<option> Select</option>
...
<option> Select</option>
</select>
<select id=dd2 class=dropdown>
<option> Select</option>
...
<option> Select</option>
</select>
(и, возможно, больше)
$(".dropdown > option:selected").index()
Поведение, которое я вижу, - это то, что возвращаемое значение - это добавленные индексы.
Могу ли я доверять этой функции или есть другое решение?
благодаря
Вы можете использовать .filter(), чтобы отфильтровать те, которые были выбраны, и иметь индекс> 0 - затем проверить длину, чтобы увидеть, сколько из них действительно изменилось
$(".dropdown option:selected").filter(function(){
return $(this).index() > 0; // check index against siblings
}).length; // <-- this will return how many are not index 0
Или это будет работать также
$(".dropdown").filter(function(){
return this.selectedIndex > 0; // check selectedIndex property of select element
}).length;
Определите значение свойства для каждой опции в раскрывающемся списке выбора, как это.
<select id=dd1 class=dropdown>
<option value="0"> Select</option>
...
<option value="n"> Select</option>
</select>
Внутри javascript выполните следующее:
if(parseInt($("#dd1").val()) > 0 ){
//do something here:
}
Для всех выпадающих списков в форме:
$("select").each(function(){
if(parseInt($(this).val()) > 0){
//Do something here:
}
});
Добавьте класс к первому варианту:
<select id=dd1 class=dropdown>
<option class="empty"> Select</option>
...
<option> Select</option>
</select>
<select id=dd2 class=dropdown>
<option class="empty"> Select</option>
...
<option> Select</option>
</select>
Затем проверьте количество пустых выборок на количество выбранных
var bValid = $(".dropdown option.empty:selected").length < $(".dropdown").length;
Обновление: улучшено, чтобы подсчитывать непопуски.
var bValid = $(".dropdown option:not(.empty):selected").length > 0;
Если у вас есть несколько выпадающих $.each()
вы должны использовать $.each()
, а затем угрожать индивидуально, или если вы выберете только одно раскрывающееся меню, вы можете использовать решение user1515084.
$(".dropdown").each(function() {
console.log($(this).attr("selectedIndex"));
}
$('selector:selected').index() === -1
. Более распространенный способ - проверить$('selector:selected').length === 0
.