0

ページにjquery検証(twitterブートストラップを使用)があり、次のASP.NETMVCアノテーションを使用しています。

[DisplayName("Text)"),Range(100,35000)]
    public decimal Field { get; set; }

要素は次のように追加されます。

@Bootstrap.TextBoxFor(x => x.Field, htmlAttributes: new {@class="ignore",id="field" })

問題は、このフィールドに空の値を許可したいが、空でない値が書き込まれた場合に備えて範囲の検証を維持したいということです。

これは私のJavaScriptコードです:

$("#Field").on("keyup", function (e) {
        e.preventDefault();
        if ($(this).val() == "") {
            $(this).removeClass("input-validation-error");
            $(this).addClass("valid");
            $(this).next().html("");
            $(this).parent().parent().removeClass("error");
        }
    })

    $.validator.setDefaults({ ignore: ".ignore" });
4

2 に答える 2

0

私は解決策を見つけました...タイプをnull許容にすると、それは機能します...

[DisplayName("Text)"),Range(100,35000)]
public decimal? Field { get; set; }

ご協力ありがとうございました!

于 2013-02-13T09:01:04.680 に答える
-2

「必須」の検証に関するハックを投稿します。フィールドが空の場合は必須のtrueの反対を返すか、値が範囲外の場合はtrueを返すという考え方です。UXのために、デフォルトの必須メッセージもパーソナライズする必要があるかもしれません

$("form").validate({
rules: {
    field1: {
        required: function() {
        return (
                                $("#fld1").val() != "" || 
                                ($("#fld1").val() != "" &&
                                (
                                 $("#fld1").val() < minVal  ||
                                 $("#fld1").val() > maxVal
                                ))
                     );
        }
    }
},....
于 2013-02-12T17:27:14.073 に答える