0

ビューに DropDownListFor があります。

@Html.DropDownListFor(model => model.PeriodCode,..., new { name = "Period", id = "PeriodID"})

そして、私の検証は次のとおりです。

jQuery.validator.addMethod('NonEmpty', function (value) {
    return ($("#PeriodID").val() != "");
}, '');

jQuery("#form").validate({
    rules: {
        Year: {
            required: true
        },
        Period: {
            NonEmpty: true
        }
    },
    messages: {
        Year: {
            required: "<div style='color:red'>Message 1 </div>"
        },
        Period: {
            NonEmpty: "<div style='color:red'>Message 2 </div>"
        }
    }
});

問題はjQuery AddMethod、フォームを送信するときに関数が呼び出されないため、DropDownList検証されないことです。ただしTextBox、名前の検証は正常に'Year'機能します。私は何を間違っていますか?

助けていただければ幸いです!

4

3 に答える 3

1

$selector の前に行方不明("#PeriodID")です。

jQuery.validator.addMethod('NonEmpty', function (value) {
    return ($("#PeriodID").val() != "");
}, '');

デモ:フィドル

とにかく、バリデータルールは次のようにする必要があります-ルールは要素をハードコーディングしてはならず、渡された値を検証する必要があります

jQuery.validator.addMethod('NonEmpty', function (value, elem, args) {
    return value != "";
}, '');

デモ:フィドル

required注:ルールを使用して実現できるため、このようなルールを追加する必要はありません。

更新:期間フィールドの名前はそうPeriodではありませんPeriodCode

jQuery("#form").validate({
    rules: {
        Year: {
            required: true
        },
        PeriodCode: {
            NonEmpty: true
        }
    },
    messages: {
        Year: {
            required: "<div style='color:red'>Message 1 </div>"
        },
        PeriodCode: {
            NonEmpty: "<div style='color:red'>Message 2 </div>"
        }
    }
});

デモ: Fiddle必要なルールあり

于 2013-10-08T09:56:01.833 に答える