JQueryValidation с MVC 4 не проверяется на размытие

Я часами бьюсь головой об стену с помощью валидации MVC 4 и jQuery для проверки первого первого на размытии. Я попытался прикрепить проверку ко всей форме И к отдельному элементу (первое поле) безрезультатно. Если я добавляю alert() в событие размытия, оно, похоже, срабатывает, но не проверяет обязательное поле. У меня есть дополнительные проверки, чтобы добавить после того, как требуемый работает, но я еще не получил их. Я не знаю, что это проблема с MVC 4. JQueryvalidate v1.10. Я также попытался настроить валидатор, а затем вызвать.valid() для элемента, который я хочу проверить, используя.blur, и все еще не валидации, которую я вижу.

$(function () {
    $('#productionOrder').focus();

    $.validator.addMethod("cMinLength", $.validator.methods.minlength,
        $.format("Must contain as least {0} chars"));
    $.validator.addClassRules("productionOrder", { cMnLength: 3 });

    $('#myForm').validate({
        onkeyup: false,
        //onfocusout: false,
        errorClass: 'fieldError'
        //rules: {
        //    productionOrder: "required number",
        //    tc: "required",
        //    dn: "required"
        //}
    });

    $("#towCount").bind("change keyup", function () {
        $form.validate().element("#towCount");
    });

    //$('#productionOrder').validate({
    //    //onkeyup: false,
    //    onfocusout: false,
    //    errorClass: 'fieldError',
    //    rules: {
    //        productionOrder: { 
    //            required: true 
    //        }
    //    }
    //});
});

И.cshtml

@model FiberLine2.ViewModels.Creel
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Test</title>
    <script src="~/Scripts/jquery-1.8.2.min.js"></script>
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <style>
        .fieldError {
            border-color: red;
            border-width: medium;
        }

        .input-label {
            font-size: 13px;
            width: 130px;
            height: 30px;
            display: inline-block;
        }
    </style>
</head>
<body>
    <form id="myForm">
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

        <div>
            <!-- app header -->
            <label>@Resources.Strings.User: </label>
            <label>@User.Identity.Name</label>
        </div>
        <fieldset>
            <legend>@Resources.Strings.Creel @Resources.Strings.Load</legend>
            <div>
                <div id="errorDiv"></div>
                <hr />
                @Html.Label(@Resources.Strings.ProductionOrder, new { @class = "input-label lock" })
                <input type="text" id="productionOrder" name="productionOrder" class="required" maxlength="4" />
                <br />
                <label class="input-label lock">@Resources.Strings.Tow  @Resources.Strings.Count</label>
                <input type="text" id="towCount" name="tc" class="required" size="5" maxlength="5" value="299" />
                <br />
                <label class="input-label lock">@Resources.Strings.Batch @Resources.Strings.Sequence</label>
                <input type="text" id="doffNumber" name="dn" size="5" maxlength="5" value="1" />
                <br />
                <label class="input-label">@Resources.Strings.Creel @Resources.Strings.Position</label>
                <input type="text" id="creelPosition" name="cp" size="5" maxlength="5" />
                <br />
                <label class="input-label">@Resources.Strings.Batch @Resources.Strings.ID</label>
                <input type="text" id="creelNumber" name="cn" size="7" maxlength="7" />
                <br />
                <hr />
            </div>
            <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>
    </form>
</body>
</html>

1 ответ

Можете ли вы попробовать это вместо этого?

var settngs = $.data($('#myForm')[0], 'validator').settings;
settngs.onkeyup = false;
Другие вопросы по тегам