我注意到asp.net mvc中的jquery.validate有奇怪的行为
我的模型字段包含StringLength
属性的字段:
[StringLength(200, ErrorMessage = "Cannot be longer than 200 characters.")]
public string Name{ get; set; }
观看:
@Html.LabelFor(model => model.Name, htmlAttributes: new { })
<div class="form-group formgroup-custom">
@Html.TextAreaFor(model => model.Name, 2, 1, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger error-custom" })
所以现在,如果我点击我的TextArea
并输入201个字符,则不会出现错误,然后会出现失去焦点(让我们说点击其他字段)错误消息。然后我回到我的TextArea
删除200个字符下的内容,错误信息隐藏,不同之处在于输入201个字符后错误显示自动而不需要失去焦点。
看起来第一次验证检查是针对某个loosing focus
事件,然后是第二次检查keye up
。
所以我的问题是如果jquery.validate*
有一些错误,或者是否有可能某些其他脚本以某种方式将其分解。
框架: .NET 4.6
答案 0 :(得分:1)
这是jquery validate的默认行为。
如果您只想在表单提交上进行验证,请设置&#39; onkeyup&#39;,&#39; onclick&#39;和&#39; onfocusout&#39;到&#39; false&#39;:
$("#form").validate({
onfocusout: false,
onkeyup: false,
onclick: false
})