Проверьте, выбран ли параметр с помощью jQuery, если не выбран по умолчанию - PullRequest
203 голосов
/ 29 сентября 2008

Используя jQuery, как проверить, есть ли выбранная опция в меню выбора, и если нет, назначить одну из выбранных опций.

(Выбор генерируется с помощью лабиринта функций PHP в приложении, которое я только что унаследовал, так что это быстрое решение, пока я разбираюсь с ними:)

Ответы [ 18 ]

264 голосов
/ 29 сентября 2008

Хотя я не совсем уверен, чего именно вы хотите достичь, этот фрагмент кода сработал для меня.

<select id="mySelect" multiple="multiple">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
</select>

<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length) {
    $("#mySelect option[value='3']").attr('selected', 'selected');
  }
});
</script>
29 голосов
/ 29 сентября 2008

Для этого не нужно использовать jQuery:

var foo = document.getElementById('yourSelect');
if (foo)
{
   if (foo.selectedIndex != null)
   {
       foo.selectedIndex = 0;
   } 
}
12 голосов
/ 13 сентября 2013

Этот вопрос старый и имеет много точек зрения, поэтому я просто добавлю кое-что, что поможет некоторым людям, я уверен.

Чтобы проверить, есть ли у выбранного элемента какие-либо выбранные элементы:

if ($('#mySelect option:selected').length > 0) { alert('has a selected item'); }

или чтобы проверить, не выбрано ли что-либо для выбора:

if ($('#mySelect option:selected').length == 0) { alert('nothing selected'); }

или если вы находитесь в каком-то цикле и хотите проверить, выбран ли текущий элемент:

$('#mySelect option').each(function() {
    if ($(this).is(':selected')) { .. }
});

чтобы проверить, не выбран ли элемент в цикле:

$('#mySelect option').each(function() {
    if ($(this).not(':selected')) { .. }
});

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

11 голосов
/ 29 сентября 2008

ответ Ленсиони - это то, что я бы порекомендовал. Вы можете изменить селектор для опции ('#mySelect option:last'), чтобы выбрать опцию с определенным значением, используя «#mySelect option[value='yourDefaultValue']». Подробнее о селекторах .

Если вы интенсивно работаете со списками выбора на клиенте, проверьте этот плагин: http://www.texotela.co.uk/code/jquery/select/. Посмотрите на источник, если вы хотите увидеть еще несколько примеров работы со списками выбора.

9 голосов
/ 30 октября 2009

Вот моя функция, изменяющая выбранную опцию. Работает на jQuery 1.3.2

function selectOption(select_id, option_val) {
    $('#'+select_id+' option:selected').removeAttr('selected');
    $('#'+select_id+' option[value='+option_val+']').attr('selected','selected');   
}
7 голосов
/ 09 декабря 2009
<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
   $("#mySelect").val( 3 );

});
</script>
3 голосов
/ 04 декабря 2009

Легко! По умолчанию должен быть первый вариант. Готово! Это привело бы вас к ненавязчивому JavaScript, потому что JavaScript не нужен :)

Ненавязчивый JavaScript

3 голосов
/ 29 сентября 2008

Я уже встречал упомянутый плагин texotela , который позволил мне решить его следующим образом:

$(document).ready(function(){
    if ( $("#context").selectedValues() == false) {
    $("#context").selectOptions("71");
    }
});
2 голосов
/ 31 октября 2009

Это был быстрый скрипт, который я нашел, который работал ... Результат присваивается метке.

$(".Result").html($("option:selected").text());
2 голосов
/ 29 сентября 2008

Посмотрите на selectedIndex элемента select. Кстати, это просто старая вещь DOM, а не специфичная для JQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...