【问题标题】:JQuery: How to determine if a radio button has been selected?JQuery:如何确定单选按钮是否已被选中?
【发布时间】:2010-11-10 06:30:06
【问题描述】:

如何确定我的单选按钮是否被选中?

例如:

if ( radio_button_selected ) {

// do something

} else {

// do something else

}

【问题讨论】:

标签: javascript jquery


【解决方案1】:

您可以使用此选择器来确定是否有任何被选中:

jQuery("input[name='my_button_group']:checked")

例如:

if (jQuery("input[name='my_button_group']:checked")) {
    ...
}
else {
    ...
}

【讨论】:

  • 为什么我需要 .length > 0
  • @StaceyH - 你不在 JavaScript 中,但这是一个比其他答案更快的选择器(因为 input)。
  • @Nick Craver ...不确定您是否可以从我的帖子中看到我的 cmets..但是看看
  • @John - 我想你可能需要那个检查,但如果复选框与收音机同名,命名也很糟糕,因为该值总是搞砸表单序列化输出:)
  • @Nick.. 同意,但我见过复选框和收音机名称相同但一个被禁用而另一个被启用的情况。由于表单上的其他元素,这发生了变化。这个问题真的让我想到了那个场景。
【解决方案2】:

如果您已经通过其他方式选择了您的单选按钮rb,您可以这样做:

var rb = $('whatever selector');

// other code

if (rb.is(':checked'))
{
  // code
}

【讨论】:

  • +1 表示能够将 rb 重用于代码中的其他内容(例如获取 val())
  • @jelbourn rb.checked 是一个更好的选择 - 它更快、更易读。
  • @Šime Vidas:checked 不是 jquery 列表对象的属性。实际的 DOM 对象具有 checked 属性。
  • @jelbourn 是的,我的错。 rb[0].checked 是正确的解决方案(而且它仍然更快)。
  • @Šime Vidas:你说它更快是对的;我做了一个小实验,发现它快了大约 22 倍。
【解决方案3】:
if ($("input[name='yourRadioName']:radio:checked").length) {
} else {
}

【讨论】:

  • @Nick Craver... Justin 的方法与我的方法不同。 :radio 确保选择了一个单选按钮,而不仅仅是任何名为“yourRadioName”的选中输入。但是你是对的,使用输入会执行得更快。
【解决方案4】:

如果您已经引用了该元素,则可以使用其checked 属性:

$('input[type=radio]').focus(function(){
    // "this" is the element that was clicked

    if (this.checked) {
        // do something
    } else {
        // do something else
    }
});

【讨论】:

  • 这不是没有意义的,因为如果用户“点击”了一个单选按钮,它总是会被“选中”,因此你永远不会遇到上面代码的 ELSE 条件
  • @StaceyH 一个很好的观点。改为focus 来说明我的观点。
猜你喜欢
  • 2010-11-13
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 2012-06-18
  • 2020-12-04
相关资源
最近更新 更多