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

标签 javascript jquery validation jquery-form-validator

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

关于javascript - 现有值的自定义验证器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34721523/

相关文章:

php - 使用 PHP/MySQL 日期查询向 Google 可视化页面提交表单

jquery - 如何平移/缩放 HTML 内容? (即谷歌地图、WordSquared)

java - 在没有 try-catch 的情况下验证整数或字符串

javascript - 必填字段验证器在回发之前不起作用

javascript - 在 javascript 中将 %20 替换为 'url.split' 中的空格

javascript - 元素不会垂直粘在屏幕中间

jquery - 在 Chrome 中使用 jquery 的文本输入时未触发更改事件

javascript - 碰撞检测: Why is other object's offset so large?

javascript - javascript 中的警报语句不显示?

javascript - 单击打开卡以显示更多详细信息