0

我在处理互斥单选按钮的 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);
});

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

$(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 检查元素。

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

4

1 回答 1

2

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

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

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

于 2013-01-25T18:55:36.653 回答