0

MVC 3 アプリに取り組んでいます。サーバー側のカスタム コードが完成し、クライアント側で作業しています。既存の控えめなものに結び付けたいので、addMethod を使用しています。疑似は、「radioValue が true の場合、counterValue は 0 より大きくなければならない」のようなものになります。問題は、radioValue を取得しようとすると、関数が 3 行目で実行を停止することです。一般的な例外「Check you method」をスローします。お知らせ下さい。あ、これは初めてなので、何かありましたら教えてください。ありがとう!

$.validator.addMethod("requiredifyes", function (val, elem, param) {
var dependantProperty = param;
var radioValue = document.getElementByName(dependantProperty).value;
var counterValue = val;

if (radioValue == true) {
    if (counterValue == 0) {
        return false;
    }
}
    return true;
});

$.validator.unobtrusive.adapters.addSingleVal("requiredifyes", "othervalue", "requiredifyes");
4

2 に答える 2

1

getElementByName要素ノードのリストが表示されます..

SOリストの値に直接アクセスしようとすると、エラーがスローされます..コレクション内の要素には、リスト全体ではなく値が含まれます...

その名前で1つしかないことが確かな場合..これを試してください

var radioValue = document.getElementByName(dependantProperty)[0].value;

同じ名前の要素が複数ある場合..それらを反復処理する必要があります。/

また、関数パラメーターを直接割り当てることができる場合、2 つの変数を不必要に割り当てています。

于 2012-10-25T23:08:17.583 に答える
0

よろしくお願いします。不要な変数をすべて取り出し、配列を返すコードに関するSushanthのコメントに基づいて、JQueryフォーラムを調査してJQueryソリューションを探しました。最終的な作業コードは次のとおりです。

    $.validator.addMethod("requiredifyes", function (val, elem, param) {
       var radioValue = $('input:radio[name="' + param + '"]:checked').val();

    if (radioValue == "True") {
        if (val == 0) {
            return false;
        }
    }
    return true;
});

$.validator.unobtrusive.adapters.addSingleVal("requiredifyes", "othervalue", "requiredifyes");
于 2012-10-26T14:46:20.087 に答える