这是我目前的模特:
[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;
});
答案 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;
});
更新 -
您似乎必须手动触发onkeyup的验证。更新了代码段。
更新了单元素验证的触发器。
查看所有验证选项,以获得更多自定义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>
请注意,只有在“提交”字段之前(例如在选项卡切换之后)才使用密钥验证。