Проверьте, выбран ли параметр с помощью jQuery, если не выбран параметр по умолчанию
используя jQuery, как вы проверяете, есть ли опция, выбранная в меню выбора, и если нет, назначьте один из параметров как выбранный.
(выбор генерируется с лабиринтом функций PHP в приложении, которое я только что унаследовал, так что это быстрое исправление, пока я получаю голову вокруг них:)
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;
}
}
этот вопрос старый и имеет много взглядов, поэтому я просто выброшу некоторые вещи, которые помогут некоторым людям, я уверен.
чтобы проверить, имеет ли элемент 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 не нужен :)
Я уже наткнулся на плагин texotela упомянуто, что позволило мне решить его следующим образом:
$(document).ready(function(){
if ( $("#context").selectedValues() == false) {
$("#context").selectOptions("71");
}
});
посмотреть selectedIndex на select
элемент. Кстати, это простая вещь старого дома, а не jQuery-specific.
Это был быстрый скрипт, который я нашел, что работал... .Результат присваивается метке.
$(".Result").html($("option:selected").text());
Я нашел хороший способ проверить, выбран ли параметр и выбрать значение по умолчанию, когда это не так.
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 () is undefined
$("#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;
}
});