【问题标题】:Reset default value on radio button using jQuery使用jQuery重置单选按钮的默认值
【发布时间】:2013-01-25 18:54:18
【问题描述】:

我在处理互斥单选按钮的 asp.net mvc3 应用程序中使用的一些 jQuery 存在问题。选中/取消选中部分工作正常,但单选按钮控件的值保留为真实值,即使未选中也是如此。

这是我正在使用的 jQuery:

$('.customRadio').click(function () {
    var checkState = $(this).attr('checked');
    $('.customRadio:checked').each(function () {
        $(this).attr('checked', false);
    });
    $(this).attr('checked', checkState);
});

我已经尝试像这样使用 jQuery 设置 .val('myValue') 属性,但它不起作用:

$(this).val($(this).getAttribute("falsevalue"));

这里是渲染的 html:

<div class="one columns " style="min-width: 64px;">

                    <label for="Approve" class="hide-on-phones" style="white-space: nowrap">Approve</label>
                    <span class="clearfix hide-on-phones"></span>
                    <label for="Approve" class="show-on-phones">Approve &nbsp; </label>
                    <span class="clearfix show-on-phones"></span>                        

                <input class="customRadio" falsevalue="N" id="Approve" name="Approve" truevalue="Y" type="radio" value="N">
            </div>

<div class="one columns " style="min-width: 50px;">

                    <label for="Reject" class="hide-on-phones" style="white-space: nowrap">Reject</label>
                    <span class="clearfix hide-on-phones"></span>
                    <label for="Reject" class="show-on-phones">Reject &nbsp; </label>
                    <span class="clearfix show-on-phones"></span>                        

                <input class="customRadio" falsevalue="Y" id="Reject" name="Reject" truevalue="N" type="radio" value="Y">
            </div>

我正在用 Chrome 检查元素。

有人有什么想法或建议吗?

【问题讨论】:

    标签: jquery asp.net asp.net-mvc-3


    【解决方案1】:

    getAttribute 是原生 JS 方法,使用 attr() :

    $(this).val($(this).attr("falsevalue"));
    

    请注意,如果您在 DOM 检查器(如 chrome 或 firebug)中检查元素,即使您以编程方式更改该属性也不会更改,但会在表单提交时更改。并且不应该需要循环,只需执行 $('.customRadio:checked').prop('checked', false); 即可(作为属性,prop() 将是正确的方法)。

    【讨论】:

    • attr() 已被弃用,请使用 prop()
    • @HighParkCoder - 如果你给我看文档说 prop() 现在也应该用于属性,我会的。
    • @adeneo +1,并为该评论加一个。虽然你可以使用this.getAttribute("falsevalue")
    • 我的立场是正确的,但 .prop 是检查复选框是否被选中的更好方法,并且 在文档中,阁下
    • 是的,但据我所知没有falsevalue 属性,它可能是一个属性?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 2014-06-07
    • 2023-02-08
    • 2020-08-10
    相关资源
    最近更新 更多