1

我在重置单选按钮中有 2 个问题并检查。

第 1 期。

  • 我通过此按钮检查或选择(第一行)单选按钮 Check Option 1, Check Option 2, Check Option 3

  • 它仅在第一次正常工作,例如,如果我单击按钮Check Option 1, Check Option 2, Check Option 3,它将根据其值正确检查单选按钮。

  • 如果我再次单击该按钮Check Option 1, Check Option 2, Check Option 3它不起作用。

第 2 期。

  • 我需要通过单击重置为其默认选中值Reset button。例如参见第 2 行。

  • 如果我通过检查,重置不起作用Check Option 1, Check Option 2, Check Option 3。如果我手动检查它的工作正常。

  • 但我正在使用$('input[name=rdoSample][value=' + value.Rdovalue + ']').attr('checked', 'checked');,因为我从数据库中获取价值,我必须根据它的价值进行检查。

    小提琴演示

    <title>Testing</title>
    <script src="scripts/jquery-1.10.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    
        $(document).ready(function() {
    
            $('#btnReset').click(function() {
                $('input[type=radio]').prop('checked', function() {
                    return this.getAttribute('checked') == 'checked';
                });
            });
    
            $('#btnCheck1').click(function() {
                $('input[name=rdoSample][value="a"]').attr('checked', 'checked');
    
            });
    
            $('#btnCheck2').click(function() {
                $('input[name=rdoSample][value="b"]').attr('checked', 'checked');
            });
    
            $('#btnCheck3').click(function() {
                $('input[name=rdoSample][value="c"]').attr('checked', 'checked');
            });
    
        });
    
    </script>
    

    <div>
        <table cellpadding="0" cellspacing="0" border="1">
            <tr>
                <td>
                    1)
                </td>
                <td>
                    <input type="radio" name="rdoSample" value="a" checked="checked" />
                    a
                    <input type="radio" name="rdoSample" value="b" />
                    b
                    <input type="radio" name="rdoSample" value="c" />
                    c
                </td>
                <td>
                    <input type="button" value="Check Option 1" id="btnCheck1" />
                    <input type="button" value="Check Option 2" id="btnCheck2" />
                    <input type="button" value="Check Option 3" id="btnCheck3" />
                </td>
            </tr>
            <tr>
                <td>
                    2)
                </td>
                <td>
                    <input type="radio" name="rdoSample1" value="11" checked="checked" />
                    11
                    <input type="radio" name="rdoSample1" value="22" />
                    22
                    <input type="radio" name="rdoSample1" value="33" />
                    33
                </td>
            </tr>
            <tr>
                <td colspan="3" align="center">
                    <input type="button" value="Reset" id="btnReset" />
                </td>
            </tr>
        </table>
    </div>
    

4

2 回答 2

4

使用prop而不是attr像这样更改选中的属性。

$('input[name=rdoSample][value="a"]').prop('checked', 'checked');

Js小提琴

于 2013-06-20T07:27:40.037 回答
1

您应该替换.attr("checked",....prop("checked,....

属性和属性是有区别的。引用 jQuery 文档:

尽管如此,关于checked 属性最重要的概念是它不对应于checked 属性。该属性实际上对应于 defaultChecked 属性,应该只用于设置复选框的初始值。选中的属性值不会随着复选框的状态而改变,而选中的属性会。


所以,使用这样的东西,会让一切正常:

$("input[name=<name>][value=<value>]").prop(
        "checked", true);

另请参阅这个简短的演示

于 2013-06-20T07:45:51.677 回答