现有值的自定义验证器不起作用

时间:2016-01-11 12:23:52

标签: javascript jquery validation jquery-form-validator

我使用jQuery Form验证器,我创建了一个自定义验证器来检查输入值是否已经存在,但它不起作用。

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,然后在第二个输入IEST TEST,通常显示错误。当我尝试用另一个值替换该值时(本例中为MASTER),错误不会消失。

以下是console.log(seen)显示的内容:

  

Object {TEST:true,M:true,MAS:true,MAST:true,MASTER:true}

1 个答案:

答案 0 :(得分:0)

用更好的算法解决了这个问题:

$.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不同(以防止元素自身比较),并且值相同,则抛出错误(重复)。