【问题标题】:If input:radio click checked radio如果输入:收音机点击选中的收音机
【发布时间】:2013-04-26 07:50:26
【问题描述】:

如何检测单选按钮何时被选中?

HTML:

<label><input type="radio" name="test">One</label>
<label><input type="radio" name="test">Two</label>

每当用户从我的单选按钮中选择一个选项时,我都想执行某个功能

我尝试了类似的方法:

$("input:radio").on("change", function(){
    if($(this).is(':checked')) {
        $(this).attr('checked', false)
        // do some more...

    }
});

演示: http://jsfiddle.net/A5EzU/

正如小提琴上显示的“清除”调试语句,一旦点击它看起来就像它一直被点击一样。

【问题讨论】:

  • 检测是否检查了收音机,抱歉扩展不好:(@OneTrickPony
  • 您需要复选框。期间。
  • 不,单选按钮总是只选择一个选项(除非最初没有提供默认值,但应该避免这种情况)。另一侧的复选框支持 0..n 个选定元素。如果您希望 0 或 1 继续使用复选框,但添加一些 JS 以取消选择先前选择的项目或使用单选按钮并添加“无”单选按钮。
  • 另外,请注意.prop().attr() 更可取。查看.prop() jQuery 文档以了解原因。
  • @OneTrickPony 他希望能够在选中收音机后取消选中它。

标签: jquery input radio


【解决方案1】:

您可能想尝试使用复选框而不是单选按钮,因为单选按钮只能同时选中一个。

HTML:

<label><input type="checkbox" />One</label>
<label><input type="checkbox" />Two</label>

JS:

$("input:checkbox").on("change", function(){
  $("input:checkbox").not($(this)).prop('checked', false);
});

小提琴示例:click

【讨论】:

    【解决方案2】:

    试试这个

    HTML

    <label><input type="radio" name="test" id="one">One</label>
    <label><input type="radio" name="test" id="two">Two</label>
    
    <code></code>
    

    JS

    $("input:radio").on("change", function(){
    if($(this).is(':checked')) {
        $('code').html('clear !');
        $(this).attr("id");
        $('code').append($(this).attr("id"));
        $(this).attr(':checked', false)
        if($(this).attr("id")=="one")
        {
            alert("One");
        }
        else
            alert("two");
      }
    });
    

    Demo

    【讨论】:

    • -1 表示这篇文章中的所有错误:NO-OP:$(this).attr("id"); // 使用 prop 并删除冒号:$(this).attr(':checked', false) // 不要结合 {} 和非{}同一语句中的主体 // 使用 this.id // 除此之外,它不起作用。
    猜你喜欢
    • 2018-10-10
    • 1970-01-01
    • 2012-08-11
    • 2019-03-07
    • 2012-09-22
    • 2017-11-20
    • 2020-06-23
    • 2011-05-23
    • 2013-11-01
    相关资源
    最近更新 更多