JS / Jquery:如何检查下拉列表是否选择了值?

时间:2010-10-25 20:00:30

标签: javascript jquery drop-down-menu

我用谷歌搜索并尝试了很多方法来做到这一点,但到目前为止我都无法工作。我正在寻找的很简单:我希望能够判断下拉列表是否具有选定值。问题是selectedIndex,:selected,val()等确实返回以下情况的结果:

<select>
<option value="123">123</option>
<option value="234">234</option>
</select>

显然,浏览器会显示此下​​拉列表并选择123选项,但只会选择它,因为没有其他选项,实际上这个下拉列表没有选中的值,因为没有“selected”属性。所以基本上我试图找到如何区分上述下拉列表

<select>
<option selected value="123">123</option>
<option value="234">234</option>
</select>

5 个答案:

答案 0 :(得分:19)

var hasValue = ($('select > [selected]').length > 0);

可替换地,

var hasValue = $('select').has('[selected]');

答案 1 :(得分:2)

快速解决方案:

<select>
<option selected></option>
<option value="123">123</option>
<option value="234">234</option>
</select>

然后看看你是否有.val()

答案 2 :(得分:1)

批准的答案对我来说似乎不起作用。

以下是检查是否选择了所有选项的方法:

if($('select option:selected').length > 0) {
/* Do your stuff here */
}

答案 3 :(得分:0)

据我所知,你的两个例子没有功能上的区别。基本上,浏览器会自动选择第一个option

例如,参见

的结果
$('option:selected')

关于你的第一个例子。

如果您真的想要防止这种情况发生,您有两种选择。第一个是根据Jason的回答在select中引入一个新的空元素。另一种选择是取消选择自动选择的值:

$(document).load(function(){
    $('option:selected').attr('selected', false);
});

这清除了选择。因此,$('select').val()不是空字符串的任何结果都将由用户进行更改。

答案 4 :(得分:-1)

这应该有效:

if($('#mySelect').find('[defaultSelected]').size()>0){/*do your stuff*/}