使用 jquery-validate.How 更改仅一个元素的触发验证时间,其他元素保持默认
Using jquery-validate.How to change the timing of trigger validating of only one element with other elements stay default
我正在编写一个用于注册和使用 jquery-validate 进行验证的页面。
我的问题的一个简单示例如下。
JS 代码
$("#registerForm").validate({
rules : {
"loginname" : {
required : true,
minlength : 6,
maxlength : 20
},
"phoneMessage" : {
remote : {
url : "phoneMessageValidate.do",
type : "post",
dataType : "json",
data : {
phoneMessage : function() {
return $("#phoneMessage").val();
}
},
},
},
},
submitHandler : function(form) {
form.submit();
}
}) //edition:jquery-1.11.3 jquery-validation-1.14.0
<form id="registerForm">
<input type="text" id="loginname" name="loginname"></input>
<input type="text" id="phoneMessage" name="phoneMessage"></input>
<input type="submit" value="submit"></input>
</form>
默认情况下,所有元素在焦点外时都会被验证。很有用,但在这种情况下,我的要求是:
- phoneMessage 被验证仅当提交表单时,而
其他元素保持默认设置。
- 任何元素的无效状态都会阻止表单的提交。
通过搜索jquery-validate的介绍网站:
http://jqueryvalidation.org/validate#onfocusout
我发现我们可以通过在验证函数中设置参数"onfocusout = false"来改变触发验证的时间。 由于两个元素是在同一个验证函数中定义的,我该如何更改其中一个的验证?
- The
phoneMessage
is validated only when the form is submitted, while other element stay default setting.
简单地用条件函数覆盖onfocusout
函数。
onfocusout: function(element) {
if (element.name === "phoneMessage") {
// Disable `onfocusout` for 'phoneMessage' element
return false;
} else {
// DEFAULT `onfocusout` function
if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element))) {
this.element(element);
}
}
}
演示:https://jsfiddle.net/z73efhjz/
- The invalid status of any elements can block the submit of form.
这已经是插件的默认行为。
仅供参考- <input>
标签不是容器元素,因此没有 </input>
标签这样的东西。
我正在编写一个用于注册和使用 jquery-validate 进行验证的页面。 我的问题的一个简单示例如下。
JS 代码
$("#registerForm").validate({
rules : {
"loginname" : {
required : true,
minlength : 6,
maxlength : 20
},
"phoneMessage" : {
remote : {
url : "phoneMessageValidate.do",
type : "post",
dataType : "json",
data : {
phoneMessage : function() {
return $("#phoneMessage").val();
}
},
},
},
},
submitHandler : function(form) {
form.submit();
}
}) //edition:jquery-1.11.3 jquery-validation-1.14.0
<form id="registerForm">
<input type="text" id="loginname" name="loginname"></input>
<input type="text" id="phoneMessage" name="phoneMessage"></input>
<input type="submit" value="submit"></input>
</form>
默认情况下,所有元素在焦点外时都会被验证。很有用,但在这种情况下,我的要求是:
- phoneMessage 被验证仅当提交表单时,而 其他元素保持默认设置。
- 任何元素的无效状态都会阻止表单的提交。
通过搜索jquery-validate的介绍网站:
http://jqueryvalidation.org/validate#onfocusout
我发现我们可以通过在验证函数中设置参数"onfocusout = false"来改变触发验证的时间。 由于两个元素是在同一个验证函数中定义的,我该如何更改其中一个的验证?
- The
phoneMessage
is validated only when the form is submitted, while other element stay default setting.
简单地用条件函数覆盖onfocusout
函数。
onfocusout: function(element) {
if (element.name === "phoneMessage") {
// Disable `onfocusout` for 'phoneMessage' element
return false;
} else {
// DEFAULT `onfocusout` function
if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element))) {
this.element(element);
}
}
}
演示:https://jsfiddle.net/z73efhjz/
- The invalid status of any elements can block the submit of form.
这已经是插件的默认行为。
仅供参考- <input>
标签不是容器元素,因此没有 </input>
标签这样的东西。