使用jQuery验证处理空响应

时间:2013-08-27 10:43:34

标签: jquery validation jquery-validate

我正在尝试使用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验证并且不显示任何错误消息?

1 个答案:

答案 0 :(得分:0)

不幸的是the remote method使用此插件的方式。如果从服务器返回true,则该元素有效...如果服务器返回false,null或undefined,则该元素将显示该消息,并且该元素被视为无效。

  

“...对于有效元素必须为true,对于无效元素可以是任何false,undefined或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/