【发布时间】:2014-11-20 00:48:52
【问题描述】:
这快把我逼疯了。目前正在开发新的 ASP .Net MVC 项目并修复客户端验证。这不是我第一次使用它,关于不显眼的验证有很多关于 SO 的问题,我想我已经全部阅读了。
- 表单是使用
Html.BeginForm创建的 - web.config
ClientValidationEnabled和UnobtrusiveJavaScriptEnabled设置为 true - 为我的模型
Results属性添加了属性(简单的Required属性) - 所有必要的脚本都以正确的顺序包含:
jquery、jquery.validate.js,然后是jquery.validate.unobtrusive.js - 在我看来,我使用
@Html.TextAreaFor(model => model.Results)
@Html.ValidationMessageFor(model => model.Results)
- HTML 中存在不显眼的验证属性。
HTML:
<textarea class="input-validation-error" cols="20" data-val="true" data-val-required="Results is required." id="Results" name="Results" rows="2"></textarea>
问题在于验证确实有效,但仅在输入值更改时有效,但当单击提交按钮时,所有错误都将被忽略并发布表单。所以我尝试更改一些验证器配置。
var settngs = $.data($('form')[0], 'validator').settings;
settngs.onsubmit = function (element) { $(element).valid(); };
或者类似的东西:
$('form').validate({
onsubmit: function (element) {
this.element(element);
}
});
通常,onfocuout 有问题,但submit 没有问题。我会忘记或错过什么?
【问题讨论】:
-
你包括
@Html.ValidationMessageFor(m => m.Results)吗? -
我建议在浏览器上查找控制台。如果 javascript 中有任何语法错误,您的脚本可能根本无法运行,从而允许 elemento 执行默认行为。
-
是ajax表单提交还是普通表单提交?
-
@Rudresh,这是通常的表单提交,我使用 Html.BeginForm。我不需要 unobtrusive.ajax。
-
@FabianoAraujo,控制台很清晰,没有错误
标签: jquery asp.net-mvc validation