jquery.validate奇怪的行为

时间:2016-06-28 14:07:03

标签: jquery .net asp.net-mvc

我注意到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

1 个答案:

答案 0 :(得分:1)

这是jquery validate的默认行为。

如果您只想在表单提交上进行验证,请设置&#39; onkeyup&#39;,&#39; onclick&#39;和&#39; onfocusout&#39;到&#39; false&#39;:

$("#form").validate({
   onfocusout: false,
   onkeyup: false,
   onclick: false
})