1

編集済み、以下を参照

今のところ、アカウント所有者の数を表す値を持つ 2 つのラジオ ボタンがあります。すなわち:

<INPUT id="ONE_HOLDER" name=NR_OF_HOLDERS value=1 type=radio />
<LABEL for=ONE_HOLDER>One holder</LABEL>
<br />
<INPUT id="TWO_HOLDERS" name=NR_OF_HOLDERS value=2 type=radio />
<LABEL for=TWO_HOLDERS>Two holders</LABEL>

ラジオ ボタンのいずれかが選択されるたびに検証したいので、Jquery バリデーターを使用して次のことを行います。

//Validations fix for radio and checkbox checks
$('input[type="radio"],input[type="checkbox"]').change(function(){
    $("#YOUR_ACC").validate().element(this);
});

これは

$('#YOUR_ACC').validate({ ... });

次に、次のカスタムバリデータメソッドを実行します。

$.validator.addMethod("numberOfHolders", function(value, element) {
    try {
        nrOfHolders = value;
        alert("The value is " + nrOfHolders);
        if(nrOfHolders == 1)     { return true; }
        else if(nrOfHolders == 2){ return false; }          
    }
    catch(err) {
        return false;
    }
});

それはすべて実行されますが、問題は、選択する必要がある最初のラジオボタンを選択すると、2番目のラジオボタンを選択してもその値(1)が保持されることです。

それはなぜですか、どうすれば修正できますか?

ソリューションの編集

以下の応答の回答を参照してください。

4

1 に答える 1

1

私の解決策

のようです

addMethod("numberOfHolders", function(value, element) { });

ラジオ ボタンの値を取りません。要素パラメーターを使用して正しい要素を取得することで機能させました (確かに、より動的に)。次に、通常のjQuery メソッドで行うように、チェックされたラジオ ボタンの値を取得します。

var element_name = $(element).attr('name');
value = $('input:radio[name="'+element_name +'"]:checked').val();
于 2012-12-03T09:29:52.170 に答える