我正在尝试动态更改字段的规则(和消息(。它似乎有效,但是我定义的第一个规则是即使我重新定义它们也适用的规则。我尝试了方法" 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);
}
每次我提交无效的响应时,它会再次提出,当它是有效的回复时,它会问下一个问题。但是验证始终应用第一组规则,它不会刷新它们(字段"规则"one_answers"消息"正在正确更改(。
找到了一个解决方案:
validator.destroy();
这会破坏实例(因为 validate((是插件的初始化(。validator.destroy((。
一种替代方法是使用规则('remove'(和规则('add',规则(。在这种情况下