如何强制执行所需的规则,并在需要时在SPAN标记内显示错误?
尝试将自定义客户端验证添加到dotNET ASP MV* 网页字段Report.Name。由于其他原因,在重构完成之前,我不能添加不显眼的验证JQuery。现在我正在尝试使用jQuery验证。当我运行下面代码的表示并使用空字段提交时,我可以获得showErrors和submitHandler的触发事件。但是,我没有得到任何无效的表单错误。this.valid()和this.numberOfInvalids()方法的结果是错误数为0。整个过程就像没有错误一样提交。
报表.cshtml
<form method="post" id="formReport">
. . .
<div class="form-group">
<label asp-for="Report.Name" validation-for="Report.Name"></label>
<input type="text" class="form-control" data-val-required="The Report Name field is required." asp-for="Report.Name" />
<span asp-validation-for="Report.Name" class="text-danger"></span>
</div>
. . .
渲染HTML:
<input type="text" class="form-control"
data-val-required="The Report Name field is required."
data-val="true"
data-val-maxlength="The field Report Name must be a string or array type with a maximum length of '35'."
data-val-maxlength-max="35"
id="Report_Name"
maxlength="35"
name="Report.Name" value="" />
jQuery:
$(document).ready(function () {
$("#formReport").validate({
submitHandler: function (form) {
this.valid();
var numOfErrors = this.numberOfInvalids();
alert("submitHandler: " + numOfErrors);
submitReport();
},
onsubmit: true,
rules: {
Report_Name: {
required: true
}
},
messages: {
Report_Name: {
required: "Testing: Report_Name required"
}
},
showErrors: function (errorMap, errorList) {
var numOfErrors = this.numberOfInvalids();
alert("showErrors: " + numOfErrors);
}
});
}
3条答案
按热度按时间ru9i0ody1#
必须在配置中指定
<input>
的确切名称属性。"."
和"_"
不可互换。由于您的名称不是有效的标识符,因此需要用引号将其括起来。vm0i2vca2#
你也可以考虑使用vanilla JavaScript。如果表单应该只提交到某个URL,则可以省略最后一个事件侦听器(onsubmit)。
oninvalid事件侦听器(第二个)依赖于input元素上的
required
属性。当这个属性被设置时,输入将根据maxlength属性进行验证,并且还将假设该值不是空字符串。xqk2d5yq3#
不需要spedifying规则,消息,或消息。开箱即用的属性工作得很好。我最终需要的是“errorClass”来获得一个错误消息以显示在屏幕上。jQuery不是最好的文档化语言。