JS/Jquery: как проверить, выбрали ли выпадающие значения значения?

Я googled и попробовал несколько способов сделать это, но пока никто не работает для меня. То, что я ищу, довольно просто: я хочу узнать, имеет ли выпадающее меню выбранное значение или нет. Проблема в том, что selectedIndex,: selected, val() и т.д. Возвращают результаты для следующего случая:

<select>
<option value="123">123</option>
<option value="234">234</option>
</select>

Очевидно, браузер отобразит это раскрывающееся меню с выбранным параметром 123, но он будет выбран только потому, что нет других параметров, в действительности это выпадающее меню не имеет выбранного значения, потому что не существует свойства "selected". Поэтому в основном я пытаюсь найти, как рассказать обо всем вышеперечисленном выпадающем списке из этого

<select>
<option selected value="123">123</option>
<option value="234">234</option>
</select>

Ответы

Ответ 1

var hasValue = ($('select > [selected]').length > 0);

В качестве альтернативы,

var hasValue = $('select').has('[selected]');

Ответ 2

Быстрое решение:

<select>
<option selected></option>
<option value="123">123</option>
<option value="234">234</option>
</select>

Затем посмотрите, есть ли у вас .val()

Ответ 3

Утвержденный ответ, похоже, не работает для меня.

Вот как я это делаю, чтобы проверить, выбраны ли все опции выбора:

if($('select option:selected').length > 0) {
/* Do your stuff here */
}

Ответ 4

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

См., например, результат

$('option:selected')

в вашем первом примере.

Если вы действительно хотите предотвратить это, у вас есть два варианта. Первый заключается в том, чтобы ввести новый пустой элемент в select, за ответ Джейсона. Другой вариант - отменить выбор автоматически выбранного значения:

$(document).load(function(){
    $('option:selected').attr('selected', false);
});

Это очищает выбор. Таким образом, любой результат $('select').val(), который не является пустой строкой, будет изменяться пользователем.

Ответ 5

Это должно работать:

if($('#mySelect').find('[defaultSelected]').size()>0){/*do your stuff*/}