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

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

 123 234  

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

  123 234  

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

或者,

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

快速解决方案

  

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

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

我这样做是为了检查是否选择了所有选择选项:

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

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

例如,参见结果

 $('option:selected') 

在你的第一个例子。

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

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

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

这应该工作:

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