jQuery $(“#radioButton”).change(...) 在取消选择期间未触发

2022-08-30 01:57:55

大约一个月前,米特的问题没有得到解答。可悲的是,我现在遇到了同样的情况。

http://api.jquery.com/change/#comment-133939395

情况如下:我正在使用jQuery来捕获单选按钮中的更改。选择单选按钮后,我启用了编辑框。取消选择单选按钮后,我希望禁用编辑框。

启用工作正常。当我在组中选择其他单选按钮时,事件不会被触发。有谁知道如何解决这个问题?change

<input type="radio" id="r1" name="someRadioGroup"/> 

<script type="text/javascript">
    $("#r1").change(function () {
        if ($("#r1").attr("checked")) {
            $('#r1edit:input').removeAttr('disabled');
        }
        else {
            $('#r1edit:input').attr('disabled', true);
        }
    });
</script>

答案 1

看起来该函数仅在您选中单选按钮时调用,而不是在取消选中它时调用。我使用的解决方案是将更改事件绑定到每个单选按钮:change()

$("#r1, #r2, #r3").change(function () {

或者,您可以为所有单选按钮指定相同的名称:

$("input[name=someRadioGroup]:radio").change(function () {

这是一个工作jsfiddle示例(根据Chris Porter的评论更新)。

根据@Ray的评论,您应该避免在其中使用带有名称的名称。这些名称在jQuery 1.7.2中有效,但在其他版本中不起作用(jsfiddle示例)。.


答案 2
<input id='r1' type='radio' class='rg' name="asdf"/>
<input id='r2' type='radio' class='rg' name="asdf"/>
<input id='r3' type='radio' class='rg' name="asdf"/>
<input id='r4' type='radio' class='rg' name="asdf"/><br/>
<input type='text' id='r1edit'/>                  

查询部分

$(".rg").change(function () {

if ($("#r1").attr("checked")) {
            $('#r1edit:input').removeAttr('disabled');
        }
        else {
            $('#r1edit:input').attr('disabled', 'disabled');
        }
                    });

这是演示