Использование jQuery для определения, имеет ли выбранное значение (из нескольких) выбранное значение с индексом> 0

0

У меня есть страница с изменяющимся количеством выпадающих списков (изменения от пользователя). Для каждого из них опция по умолчанию (индекс 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()

Поведение, которое я вижу, - это то, что возвращаемое значение - это добавленные индексы.

Могу ли я доверять этой функции или есть другое решение?

благодаря

  • 0
    Конечно, вы можете проверить $('selector:selected').index() === -1 . Более распространенный способ - проверить $('selector:selected').length === 0 .
  • 0
    Если я не ошибаюсь, всегда есть выбранный вариант. Длина просто вернет, сколько элементов Select у меня есть
Показать ещё 6 комментариев
Теги:
drop-down-menu

4 ответа

2
Лучший ответ

Вы можете использовать .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

FIDDLE

Или это будет работать также

$(".dropdown").filter(function(){
   return this.selectedIndex > 0; // check selectedIndex property of select element
}).length;

FIDDLE

EXAMPLE FOR TESTING > 0 EXAMPLE FOR TESTING == 0

1

Определите значение свойства для каждой опции в раскрывающемся списке выбора, как это.

<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:
    }
});
0

Добавьте класс к первому варианту:

<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;
  • 0
    Это креативно. Мне нравится этот ответ.
  • 0
    Сделано это короче. :п
0

Если у вас есть несколько выпадающих $.each() вы должны использовать $.each(), а затем угрожать индивидуально, или если вы выберете только одно раскрывающееся меню, вы можете использовать решение user1515084.

$(".dropdown").each(function() {    
console.log($(this).attr("selectedIndex")); 
}
  • 1
    Это имеет больше смысла.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню