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"));

chrome や firebug などの DOM インスペクターで要素を検査している場合、checked プロパティはプログラムで変更しても変更されませんが、フォームが送信されると変更されることに注意してください。また、ループは必要ありません。単純に実行する$('.customRadio:checked').prop('checked', false);必要があります (プロパティであるため、prop() が正しい方法です)。

于 2013-01-25T18:55:36.653 に答える