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*/}