检查是否使用jQuery选择了选项,如果没有选择默认值


Answers:


270

虽然我不确定您到底想完成什么,但是这段代码对我有用。

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

86
选择会更容易阅读这样的:$("#mySelect").val(3);
约恩休乌-罗德

6
这使我走上了正确的道路,但我需要这样做:$("#mySelect option")[2]['selected'] = true; 在研究Firebug中的对象结构后,找出了这一点 。
semperos

28
从jQuery 1.6开始,您可以直接设置属性。$("#mySelect").prop("selectedIndex", 2)
2011年

1
.val(x)版本在Internet Explorer 8中不起作用,因此@gradbot拥有它的正确性,因为它适用于所有浏览器。
Sorcy

30

无需为此使用jQuery:

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

58
OP指出“正在使用jQuery ...”,所以忽略它似乎是多余的,不是吗?
BryanH

13
就个人而言,如果我问一个特定的问题,我想获得问题的答案,而不是以其他方式。
vitto

18
有时,您寻求的答案并非您所期望的。
MrBoJangles 2011年

5
无论如何,他都要求使用jQuery,并且jQuery的答案相当容易理解,特别是如果您不了解基本的JavaScript。
shmeeps

6
做到这一点的极好方法,有时基本的javascript可能非常方便!
哈拉汉

13

这个问题很古老,并且有很多观点,所以我只想提出一些可以肯定的东西。

要检查选择元素是否具有任何选定项:

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有多种完成同一件事的方式,因此您通常只选择哪种方式似乎最有效。


“ not”不适用于我$('#mySelect option')。each(function(){if($(this).not(':selected')){..}}); 因此使用的否定就像if(!$(this).is(':selected')){..}浏览器:Chrome; jQuery版本:3.1.1
Anil kumar,2017年


9

这是我更改所选选项的功能。它适用于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');   
}



3

我已经遇到过提到的texotela插件,它可以让我这样解决:

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


2

这是一个快速的脚本,我发现它起作用了。.Result被分配给标签。

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

1

你们在选择方面做得太多了。只需按值选择:

$("#mySelect").val( 3 );

2
无论是否已选择另一个选项,这都是在选择选项3。
Jordan Ryan Moore


1

我找到了一种很好的方法来检查是否选择了选项,如果没有选择则选择默认值。

    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()未定义的


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

0
$("#select_box_id").children()[1].selected

这是检查jquery中是否选择选项的另一种方法。这将返回布尔值(True或False)。

[1]是选择框选项的索引


0

将选择框上的事件更改为触发,一旦发生,则只需拉出所选选项的id属性即可:-

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

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

0

我只是在寻找类似的东西,发现了这一点:

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

这将查找该类中尚未选择选项的所有选择菜单,并选择默认选项(在这种情况下为“ 2”)。

我尝试使用:selected代替[selected],但没有用,因为即使没有属性,总会选择某些内容


0

如果您需要显式检查每个选项以查看是否具有“选定”属性,则可以执行此操作。否则,option:selected您将获得第一个默认选项的值。

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.