JQuery 验证规则不会动态更改
JQuery Validation rules don't change dynamicaly
我正在尝试动态更改字段的规则(和消息)。它似乎有效,但我定义的第一条规则即使在我重新定义它们时也适用。
我尝试了方法"resetForm()"没有成功,也尝试添加类似问题的一些答案之类的规则
$('input[name="textmsg"]').rules('add', rules);
但它抛出实习生 validate.js 错误。
我的代码工作如下:
var validationRules = {
defaultField: { required: true },
name: { required: true, minlength: 5, maxlength: 50 },
birthDate: { required: true, date: true },
phoneNumber: { required: true, maxlength: 20, digits: true }
};
[...]
$("#chatbox-form").submit(function(event)
{
var valid = validateField(questionsInOrder[currentQuestion]);
if (valid) {
currentQuestion++;
}
askQuestion();
}
[...]
function validateField (question)
{
var form = $("#chatbox-form");
var rules = validationRules[question];
if (typeof rules === "undefined") {
rules = validationRules.defaultField;
}
var messages = validationMessages[question];
if (typeof messages === "undefined") {
messages = validationMessages.defaultField;
}
var validator = form.validate({
rules: {
textmsg: rules
},
messages: {
textmsg: messages
},
errorPlacement: function(error, element) {
return true;
},
showErrors: function(errorMap, errorList) {
if ((Object.keys(errorList).length) > 0) {
errorMessage = errorList[0].message;
}
}
});
var valid = form.valid();
validator.resetForm();
return(valid);
}
每次我提交无效回复时,它都会再次询问,当回复有效时,它会询问下一个问题。但是验证总是应用第一组规则,它不会刷新它们(字段 'rules' 和 'messages' 正在正确更改)。
找到解决方案:
validator.destroy();
这会破坏实例(因为 validate() 是插件的初始化)。
Validator.destroy().
另一种方法是使用 rules('remove') 和 rules('add', rules)。在这种情况下,我们应该只在脚本开始时调用一次 validate()。
我正在尝试动态更改字段的规则(和消息)。它似乎有效,但我定义的第一条规则即使在我重新定义它们时也适用。 我尝试了方法"resetForm()"没有成功,也尝试添加类似问题的一些答案之类的规则
$('input[name="textmsg"]').rules('add', rules);
但它抛出实习生 validate.js 错误。
我的代码工作如下:
var validationRules = {
defaultField: { required: true },
name: { required: true, minlength: 5, maxlength: 50 },
birthDate: { required: true, date: true },
phoneNumber: { required: true, maxlength: 20, digits: true }
};
[...]
$("#chatbox-form").submit(function(event)
{
var valid = validateField(questionsInOrder[currentQuestion]);
if (valid) {
currentQuestion++;
}
askQuestion();
}
[...]
function validateField (question)
{
var form = $("#chatbox-form");
var rules = validationRules[question];
if (typeof rules === "undefined") {
rules = validationRules.defaultField;
}
var messages = validationMessages[question];
if (typeof messages === "undefined") {
messages = validationMessages.defaultField;
}
var validator = form.validate({
rules: {
textmsg: rules
},
messages: {
textmsg: messages
},
errorPlacement: function(error, element) {
return true;
},
showErrors: function(errorMap, errorList) {
if ((Object.keys(errorList).length) > 0) {
errorMessage = errorList[0].message;
}
}
});
var valid = form.valid();
validator.resetForm();
return(valid);
}
每次我提交无效回复时,它都会再次询问,当回复有效时,它会询问下一个问题。但是验证总是应用第一组规则,它不会刷新它们(字段 'rules' 和 'messages' 正在正确更改)。
找到解决方案:
validator.destroy();
这会破坏实例(因为 validate() 是插件的初始化)。 Validator.destroy().
另一种方法是使用 rules('remove') 和 rules('add', rules)。在这种情况下,我们应该只在脚本开始时调用一次 validate()。