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



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



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

757   18  

18 ответов:

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

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

этот вопрос старый и имеет много мнений, поэтому я просто брошу некоторые вещи, которые помогут некоторым людям, я уверен.

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

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

Ленсиони это то, что я рекомендую. Вы можете изменить селектор для опции ('#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");
    }
});

посмотреть selectedIndex на select элемент. Кстати, это простая вещь ol' DOM, а не jQuery-specific.

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

$(".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>');
    }

Если #some_select не имеет выбранного по умолчанию параметра, то .val () и undefined

$("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;
    }
});

Comments

    Ничего не найдено.