现有值的自定义验证器不起作用
Custom validator for existing value does not work
我正在使用 jQuery 表单验证器,我创建了一个自定义验证器来检查输入值是否已经存在,但它不起作用。
var seen = {};
$.formUtils.addValidator({
name: 'value_exists',
validatorFunction: function(value, $el, config, language, $form) {
if (seen[value]) {
return false;
} else {
seen[value] = true;
return true;
}
},
errorMessage: 'This value exits already',
errorMessageKey: ''
});
编辑:
例如,我在第一个输入值 TEST 中键入,然后在第二个中我再次键入 TEST,这通常会显示错误。当我尝试用另一个值(本例中为 MASTER)替换该值时,错误并没有消失。
这是 console.log(seen)
显示的内容:
Object {TEST: true, M: true, MAS: true, MAST: true, MASTER: true}
用更好的算法解决了问题:
$.formUtils.addValidator({
name: 'duplicated',
validatorFunction : function (value,$el,config,language,$form){
var ret = true;
$form.find('[name="' + $el.attr('name') + '"]').each(function(index, elm) {
if($el[0].id !== elm.id && elm.value === value) ret = false;
});
return ret;
},
errorMessage : 'The value exists already.',
errorMessageKey : ''
});
我在这里做的是:对于所有具有 X 名称的输入,对于每个输入,如果 ID 不同(以防止元素比较自身),并且值相同,则抛出错误(重复) .
我正在使用 jQuery 表单验证器,我创建了一个自定义验证器来检查输入值是否已经存在,但它不起作用。
var seen = {};
$.formUtils.addValidator({
name: 'value_exists',
validatorFunction: function(value, $el, config, language, $form) {
if (seen[value]) {
return false;
} else {
seen[value] = true;
return true;
}
},
errorMessage: 'This value exits already',
errorMessageKey: ''
});
编辑: 例如,我在第一个输入值 TEST 中键入,然后在第二个中我再次键入 TEST,这通常会显示错误。当我尝试用另一个值(本例中为 MASTER)替换该值时,错误并没有消失。
这是 console.log(seen)
显示的内容:
Object {TEST: true, M: true, MAS: true, MAST: true, MASTER: true}
用更好的算法解决了问题:
$.formUtils.addValidator({
name: 'duplicated',
validatorFunction : function (value,$el,config,language,$form){
var ret = true;
$form.find('[name="' + $el.attr('name') + '"]').each(function(index, elm) {
if($el[0].id !== elm.id && elm.value === value) ret = false;
});
return ret;
},
errorMessage : 'The value exists already.',
errorMessageKey : ''
});
我在这里做的是:对于所有具有 X 名称的输入,对于每个输入,如果 ID 不同(以防止元素比较自身),并且值相同,则抛出错误(重复) .