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

发布于 2024-09-28 16:14:37 字数 538 浏览 1 评论 0原文

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

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

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

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

I've googled and tried a number of ways to do this but none work for me so far. What I am looking for is quite simple: I want to be able to tell whether a dropdown has a selected value or not. The problem is that selectedIndex, :selected, val(), etc. do return results for the following case:

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

Obviously the browser will display this dropdown with the 123 option being selected but it will be selected only because there are no other options, in reality this dropdown doesn't have a selected value because there is no "selected" property. So basically I am trying to find how to tell apart the above dropdown from this one

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

岁月打碎记忆 2024-10-05 16:14:37
var hasValue = ($('select > [selected]').length > 0);

或者,

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

Alternatively,

var hasValue = $('select').has('[selected]');
女中豪杰 2024-10-05 16:14:37

快速解决方案:

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

然后查看是否有 .val()

Quick solution:

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

Then see if you have a .val()

痴梦一场 2024-10-05 16:14:37

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

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

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

The approved answer doesn't seem to work for me.

Here is how I do it to check if all select options are selected:

if($('select option:selected').length > 0) {
/* Do your stuff here */
}
背叛残局 2024-10-05 16:14:37

据我所知,您的两个示例之间没有功能区别。本质上,浏览器会自动选择第一个选项

例如,请参阅

$('option:selected')

第一个示例的结果。

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

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

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

As far as I can tell, there is no functional distinction between your two examples. Essentially, the browser automatically selects the first option.

See, for example, the result of

$('option:selected')

on your first example.

If you really want to prevent this happening, you have two options. The first is to introduce a new, empty element into the select, per Jason's answer. The other option is to deselect the automatically selected value:

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

This clears the selection. Any result of $('select').val() that isn't an empty string will therefore be a change by the user.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文