0

我正在尝试使用 jQuery 验证来针对我们的数据库验证电子邮件输入字段,以查看电子邮件 ID 是否已经存在。

输入字段如下所示。

<input name='email' id='id_email'/>

验证是这样完成的。我remote稍后会绑定规则。

var validator = $('form').validate({
       rules: { "email": {required:true,email:true} },
       messages: { "email": {
          required:'Please enter your email ID.',
          email:'Please enter a valid email ID.',
          remote: $.format('{0}')
        }}
});

$('#id_email').rules('add', {
       remote:{
          url:'/validate/',
          type:'post',
          dataType:'text',
          data:{'id_email':function() { return $('#id_email').val(); }}
       }
});

现在,如果验证失败,服务器将响应错误消息(一些纯文本),如果验证通过,则不响应。

当验证失败时,我能够正确显示来自服务器的错误消息。但是,当输入有效的电子邮件 ID 并且服务器以空响应响应时,错误消息会显示输入字段的值。如何将此视为true验证而不显示任何错误消息?

4

1 回答 1

0

不幸的是,这就是remote方法与此插件一起使用的方式。如果true从服务器返回,则元素有效...如果服务器返回false、null 或 undefined,则元素显示消息并且元素被视为无效。

“...对于有效元素必须为 true,对于无效元素可以为任何 false、未定义或 null”

也许您可以编写自己的自定义remote方法......只需确保该方法返回true您的特定响应。

jQuery.validator.addMethod("customRemote", function(value, element, params) {
    // your ajax;
    // if server response is something good, then return true
    // if server response is not so good, then return false and error message displays
}, "This is the error message");

请参阅:http: //jqueryvalidation.org/jQuery.validator.addMethod/

于 2013-08-27T16:48:00.777 回答