MVC 5在键入时显示errormessage输入字段

时间:2016-02-23 18:32:07

标签: c# asp.net-mvc model-view-controller

这是我目前的模特:

[Required(ErrorMessage = "First name is required!")]
public string FirstName { get; set; }

[Required(ErrorMessage = "Email name is required!")]
[EmailAddress(ErrorMessage = "Invalid email address!")]
public string Email { get; set; }

是否可以在键入时显示ErrorMessage,而不是在输入“失焦”时?该视图是自动生成的。

更新 这段代码由@vendettamit提供。它工作率为50%。问题是我有更多的ErrorMeesages,它们都会弹出。

$(document).ready(function () {
    var settngs = $('form').data('validator').settings;
    settngs.onkeyup = function () {
        $('form').valid();
    };
    settngs.onfocusout = false;
});

2 个答案:

答案 0 :(得分:3)

获取不显眼的jquery验证的验证器对象。更改应触发验证的事件。

    $(document).ready(function () {
        var $validatr = $('form').data('validator');
        var settngs = $validatr.settings;

        settngs.onkeyup = function (element, eventType) {
            if (!$validatr.element(element))
            {
                $(this.currentForm).triggerHandler("invalid-form", [this]);
            }
        };

        settngs.onfocusout = false;
    });

更新 -

  1. 您似乎必须手动触发onkeyup的验证。更新了代码段。

  2. 更新了单元素验证的触发器。

  3. 查看所有验证选项,以获得更多自定义here

答案 1 :(得分:0)

使用jQuery Validate 1.17和Unobtrusive,每次击键时都已经验证了元素,但是如果每个元素都没有消息占位符,则不会显示消息。您可以使用ValidationMessageFor方法添加它:

@Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
    @Html.TextBoxFor(m => m.Email, new { @class = "form-control" })
    @Html.ValidationMessageFor(m => m.Email, "", new { @class = "text-danger" })
</div>

请注意,只有在“提交”字段之前(例如在选项卡切换之后)才使用密钥验证。