jQuery Validator addMethod没有更新UI

时间:2014-06-12 15:24:54

标签: jquery jquery-validate

由于规则说'emailAccountExists'需要评估为true,如果电子邮件帐户存在,我将返回false。 当我记录响应时,以及我要返回的内容 - 逻辑正常工作。 但是,我的UI没有更新。系统始终认为电子邮件帐户存在。即使日志声明另有说法也是如此。

我也试过'远程'方法......

我认为这是一个计时问题,所以我将'async'设置为false。仍然没有运气。我不知道还有什么可以尝试的。

JavaScript:

'rules': {
    'email': {
        'required': true,
        'email': true,
        'hasValidEmailAddress': true,
        'emailAccountExists': true
    }
....
}

$.validator.addMethod('emailAccountExists', function(value, element) {
    $.ajax({
        'url': '/my-url?email=' + value,
        'type': 'get',
        'dataType': 'text',
        'timeout': 50000,
        'async': false,
        'success': function(response) {
            console.log((response === '"true"') ? false : true);
            return (response === '"true"') ? false : true;
        },
        'error': function(jqXHR, textStatus, errorThrown) {
            console.log('ERROR');
            console.log(textStatus);
            console.log(errorThrown);
        }
    });
}, messages.duplicateEmailAddress); 

使用'远程'方法:

'remote': {
    'type': 'get',
    'url': '/my-url?email=' +    ('#email').val()
}

它总是返回false。

1 个答案:

答案 0 :(得分:0)

您不需要通过查询字符串传递字段的值...

'remote': {
    'type': 'get',
    'url': '/my-url?email=' +    ('#email').val()
}

只需在服务器端代码上使用$_GET数组即可。此外,由于GET是默认设置,因此您只需要...

rules: {
    email: {
        // the other rules,
        remote: '/my-url'
    }
}

请参阅:http://jqueryvalidation.org/remote-method/

如果您需要更多帮助,则必须显示服务器端代码。