这让我发疯了。目前正在开发新的ASP .Net MVC项目并修复客户端验证。这不是我第一次使用它而且关于不显眼的验证有很多关于SO的问题,我想我已经把它们都读了。
Html.BeginForm
ClientValidationEnabled
和UnobtrusiveJavaScriptEnabled
设置为true Required
属性Results
属性)
jquery
,jquery.validate.js
,然后是jquery.validate.unobtrusive.js
@Html.TextAreaFor(model => model.Results)
@Html.ValidationMessageFor(model => model.Results)
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
存在问题。我能忘记或错过什么?
答案 0 :(得分:0)
如果你想检查视图中的控件是否有效,通过DataAnnotation意味着在模型中写入属性时[必需],然后使用HTML.Helper
&#34; @Html.TextAreaFor(model => model.Property)
@Html.ValidationMessageFor(model => model.Property)
&#34;
这为您执行验证
不要像你写的那样使用html标签
&#34; <textarea>...</textarea>
&#34;
答案 1 :(得分:0)
使用以下代码并尝试
$(document).ready(function () {
var actForm = $("#" + "FormID");
actForm.data('validator').settings.ignore = '';
$("#FormID").submit(function () {
if ($("#FormID").valid() == false) {
//error
}
});
});
答案 2 :(得分:0)
好吧,我终于找到了这个问题。有一些破坏的自定义客户端验证属性,如果输入值为null
,则抛出异常。当您尝试更改validatable输入的值时 - 属性工作正常,因为值为not null
,但是当您使用空输入提交表单时,它会抛出 UNLOGGED by console 异常并发布帖子到服务器。这显然是本地的,我试图删除这个问题,但我认为如果有人遇到类似的问题会很有用。 请记住在客户端调试自定义验证属性,因为控制台不会记录由onsubmit
引起的异常。