我有一个与 LiveValidation 扩展一起使用的 Web 表单。我有一个条件规则,如果用户选择美国,则州或省字段必须位于州缩写列表中。
我的问题是,如果用户选择美国,然后返回并更改其答案,则应删除验证规则,以便他们可以输入任何旧的文本字符串。我已经四次检查了我的语法,该函数返回一个 liveValidation 对象而不是一个错误对象,但规则没有被删除。任何建议将不胜感激。
这是脚本:
if($('#edit-submitted-state-or-province').length){
var field12 = new LiveValidation('edit-submitted-state-or-province', { validMessage: " ", onlyOnBlur: true });
field12.add( Validate.Presence, { failureMessage: "Please enter your state or province." } );
}
$('#edit-submitted-country').change(function() {
var stateList = new Array("","AK"..."WY");
if($("#edit-submitted-country").val() == "United States"){
field12.add( Validate.Inclusion, {within: stateList, failureMessage: "Please enter a valid 2-letter state abbreviation."});
}
else{
field12.remove( Validate.Inclusion, {within: stateList, failureMessage: "Please enter a valid 2-letter state abbreviation."});
}
});
回答这个问题可能已经太晚了,但这里是......
LiveValidation.remove 的文档指出“您必须向其传递与用于添加验证的参数完全相同的参数”。尽管验证函数(Validate.Inclusion)相同,但参数对象每次都会不同。它“看起来”相同并不重要(也就是说,您应该比较添加的对象和删除的对象之间每个属性的值的结果),这意味着它必须是同一个对象。确保这一点的唯一方法是移动参数对象的声明outside您在其中操作验证对象的回调,以便仅创建一次,而不是每次调用回调时都创建它。
这是代码(顺便说一句,我重命名了你的 ids)。我还确保验证检查只能添加一次。
$(function() {
var field12,
added = false,
stateList = ["", "AK", "CO", "WY"]; // etc
params = {
within: stateList,
failureMessage: "Please enter a valid 2-letter state abbreviation."
};
if ($('#state').length) {
field12 = new LiveValidation('state', {
validMessage: " ",
onlyOnBlur: true
});
field12.add(Validate.Presence, {
failureMessage: "Please enter your state or province."
});
}
$('#country').change(function() {
if ($("#country").val() == "United States") {
if (!added) {
field12.add(Validate.Inclusion, params);
added = true;
}
}
else {
if (added) {
field12.remove(Validate.Inclusion, params);
added = false;
}
}
});
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)