javascript - 如何同时使用 jQuery Validate 的 errorPlacement 和 showErrors
问题描述
我最近从验证中删除了消息功能。然后我将其放入 jQuery validateshowErrors
函数中,这样我就可以将所需输入的边框变为红色。在这一点上,一切都运行良好,直到我添加showErrors
它。
添加的原因showErrors
是我希望显示一条简单的消息,而不是多个,并且边框仍显示为红色。
从我下面的代码段中,您会看到只有showErrors
当前正在工作。反正有没有让这两个同时工作。如果是这样,怎么做?
或者,这是一个jsfiddle
调整后的 JS
errorPlacement: function() {
return false;
},
showErrors: function(errorMap, errorList) {
$('#formErrors').html('All fields must be completed before you submit the form.');
this.defaultShowErrors();
},
submitHandler: function() {
submit();
},
$('#catalogRequestForm').validate({
ignore: [],
rules: {
first_name: {
required: true,
minlength: 2
},
last_name: {
required: true,
minlength: 2
},
address1: {
required: true,
minlength: 5
},
city: {
required: true,
minlength: 2
},
state: {
required: true
},
zip: {
required: true,
digits: true,
minlength: 5
},
email: {
required: true,
email: true
}
},
errorPlacement: function(){
return false;
},
showErrors: function(errorMap, errorList) {
$('#formErrors').html('All fields must be completed before you submit the form.');
},
submitHandler: function() {
submit();
},
});
.error {
border: 2px solid #b82222;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.16.0/jquery.validate.min.js"></script>
<form method="POST" id="catalogRequestForm">
<input type="text" name="first_name" placeholder="First Name *">
<input type="text" name="last_name" placeholder="Last Name *">
<div id="formErrors"></div>
<input id="requestSubmit" type="submit" value="Submit">
</form>
解决方案
使用this.defaultShowErrors()
insideshowErrors
重新激活默认消息行为。由于您有一个return false
inside errorPlacement
,您只能看到您的样式而不是消息。
showErrors: function(errorMap, errorList) { // <- disable default errorPlacement
$('#formErrors').html('All fields must be completed before you submit the form.');
this.defaultShowErrors(); // <- re-enable default errorPlacement
},
阅读更多:jqueryvalidation.org/validate/#showerrors
仅包含submit()
,您submitHandler
就完全崩溃了。如果那是您的真正功能,请submitHandler
完全删除,因为常规表单提交已经是默认行为。否则,如果您在提交之前正在做某事,那么您需要传递一个form
参数并将其附加到.submit()
.
submitHandler: function(form) { // <- pass 'form' argument into function
// do something, then submit
form.submit(); // <- attach 'form' argument to '.submit()'
}
演示:
$('#catalogRequestForm').validate({
ignore: [],
rules: {
first_name: {
required: true,
minlength: 2
},
last_name: {
required: true,
minlength: 2
}
},
errorPlacement: function() {
return false;
},
showErrors: function(errorMap, errorList) {
$('#formErrors').html('All fields must be completed before you submit the form.');
this.defaultShowErrors();
},
submitHandler: function(form) {
form.submit();
},
});
.error {
border: 2px solid #b82222;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.16.0/jquery.validate.min.js"></script>
<form method="POST" id="catalogRequestForm">
<input type="text" name="first_name" placeholder="First Name *">
<input type="text" name="last_name" placeholder="Last Name *">
<div id="formErrors"></div>
<input id="requestSubmit" type="submit" value="Submit">
</form>
jsFiddle 版本: jsfiddle.net/ryoufcqh/
推荐阅读
- c# - C# ToolStripProfessionalRender,事件 OnRenderItemText 仅应用于第一项
- python - 使用管道转换数据后,cross_val_predict 不会产生相同数量的变量
- php - 通过 JSON 发送时 PATHINFO_EXTENSION 不起作用
- python - AttributeError:模块'seaborn'没有属性'histplot'之前没有重新分配sns
- loading - 在 Pixi JS 加载资产之前显示加载屏幕
- ffmpeg - 使用 ffmpeg 直接将 HDR 内容编码到 AV1 中
- python - 遍历 numpy 数组行
- node.js - 错误:参数“data”的值不是有效的 Firestore 文档。不能使用“未定义”作为 Firestore 值(在“chatId”字段中找到)
- python - 过滤 pandas 数据帧上的两列,其中一列代表电话通话时间
- mysql - 从计划任务执行 Powershell 脚本不会在数据库中创建表