Проверьте, выбран ли параметр с помощью jQuery, если нет, выберите значение по умолчанию

StackOverflow https://stackoverflow.com/questions/149573

Вопрос

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

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

Это было полезно?

Решение

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

<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>

Другие советы

Нет необходимости использовать jQuery для этого:

var foo = document.getElementById('yourSelect');
if (foo)
{
   if (foo.selectedIndex != null)
   {
       foo.selectedIndex = 0;
   } 
}

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

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

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

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

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 есть много различных способов выполнения одного и того же, поэтому обычно вы просто выбираете, какой из них кажется наиболее эффективным.

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

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

Вот моя функция, изменяющая выбранный параметр.Это работает для 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');   
}
<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
   $("#mySelect").val( 3 );

});
</script>

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

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

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

$(document).ready(function(){
    if ( $("#context").selectedValues() == false) {
    $("#context").selectOptions("71");
    }
});

Посмотрите на Выбранный индекс из числа select элемент.Кстати, это обычная вещь DOM, не специфичная для jQuery.

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

$(".Result").html($("option:selected").text());

Вы, ребята, слишком много делаете для отбора.Просто выберите по значению:

$("#mySelect").val( 3 );
if (!$("#select").find("option:selected").length){
  //
}

Я нашел хороший способ проверить, выбран ли параметр, и выбрать значение по умолчанию, если это не так.

    if(!$('#some_select option[selected="selected"]').val()) {
        //here code if it HAS NOT selected value
        //for exaple adding the first value as "placeholder"
        $('#some_select option:first-child').before('<option disabled selected>Wybierz:</option>');
    }

Если #какой-нибудь_выбор значит, опция по умолчанию не выбрана .val() является неопределенный

$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option
$("#select_box_id").children()[1].selected

Это еще один способ проверить, выбран параметр в jquery или нет.Это вернет логическое значение (True или False).

[1] является индексом опции select box

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

$("#type").change(function(){
  var id = $(this).find("option:selected").attr("id");

  switch (id){
    case "trade_buy_max":
      // do something here
      break;
  }
});

Я просто искал что-то подобное и нашел это:

$('.mySelect:not(:has(option[selected])) option[value="2"]').attr('selected', true);

При этом будут найдены все меню выбора в классе, в которых еще не выбран параметр, и будет выбран параметр по умолчанию (в данном случае "2").

Я пробовал использовать :selected вместо того, чтобы [selected], но это не сработало, потому что что-то всегда выбирается, даже если ничто не имеет атрибута

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

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top