jQuery Validator不能正常工作

时间:2016-07-11 11:31:25

标签: jquery jquery-validate

我有一个简单的表单来验证用户输入项目名称的位置。如果当前操作是“创建”,我必须检查输入的值是否已经在数据库中并返回错误消息。如果是编辑,我必须检查输入的值是否与当前值不同,并且在这种情况下再次检查新的是否已经在数据库中。 代码在这里:

if (((ACTION_CURRENT == ACTION_EDIT) && ($(id).val() != projectData.project.name)) || (ACTION_CURRENT ==  ACTION_CREATE)) {
            initProjectNameValidator();
        } 
        if ($(id).valid()) {
            return true;
        } else {
            return false;
        }

 function initProjectNameValidator() {
    jQuery.validator.addMethod('checkDuplicateName', function(value) {
        var isInArray = $.inArray(value, projectsNames);
        return (isInArray == -1);
    }, messages.duplicateProject);

    $('#editProjectDialogForm').validate({
        rules : {
            projectForm_name : {
                required : true,
                checkDuplicateName : true
            }
        }
    });
}

初看起来,它运作正常。但是当动作是“编辑”时会出现问题。如果我有项目(aaa,bbb,ccc),我去项目“aaa”并尝试将其更改为“bbb”,它会正确返回错误消息。如果我去项目“aaa”并尝试将其更改为“aaa”,它正确地不会返回错误消息。但问题来了。如果我去项目“aaa”尝试将其更改为“aaa”没有问题,但如果没有刷新尝试之后将其更改为“bbb”,也没有错误消息,但这里必须是一条错误消息。如果我尝试从“aaa”更改为“bbb”,同样会发生 - 给出错误,如果没有刷新尝试更改为“aaa”,则会再次出现错误,但不应该有

1 个答案:

答案 0 :(得分:0)

你的问题很不清楚,似乎很多相关代码都缺失了。但是,有一个明显的错误......

你的逻辑是有缺陷的。您在调用.valid()方法之前尝试使用.validate()方法。

.validate()仅用于初始化表单上的插件,必须先调用。然后,在初始化之后,您可以通过调用.valid()方法以编程方式触发验证。