2016-04-02 142 views
0

我有一个关于jQuery验证插件和具体远程方法的问题。jQuery验证:远程方法

说我有一个checkEmail.php脚本,用于检查数据库的电子邮件地址。我也使用required:trueemail:true。我想在从服务器获取响应的同时添加微调器,并在完成时隐藏它。

与此同时,如果服务器的结果是true,我想在电子邮件字段旁边显示绿色的勾号图标。

我用下面的代码:

$('#form').validate({ 

    rules: { 

     email: { 
      required: true, 
      email: true, 
      remote: { 
       url: 'js/ajax/checkEmail.php', 
       type: 'POST', 
       data: { 
        email: function() { 
         return $('#email').val(); 
        } 
       }, 
       beforeSend: function() { 

        //CODE TO SHOW THE SPINNER 
       }, 
       success:function(output){ 

        //CODE TO HIDE THE SPINNER 


        if(output == 'true') 
        { 
         //SHOW GREEN TICK 

        } 
        else 
        { 
         //SHOWS THE CUSTOM ERROR FROM SERVER 
        } 

       } 
      } 
     } 
    }, 
    messages: { 

     email: { 
      required: 'Please enter your email', 
      email: 'Please enter a valid email address' 
     } 
    } 
}); 

下面要说的电子邮件地址[email protected]是在数据库中。远程方法将返回true。同时满足了requiredemail两种方法。所以会显示绿色的勾号。

问题:

如果我不满意的需要,电子邮件的方法之一,那么将自动显示错误信息,但绿色的勾将保持不变。我试图在.validate()之后使用.valid()来检查表单何时无效,然后删除绿色勾号。它不工作。

if($('#form').valid()) 
{ 
    //REMOVE GREEN TICK : --> NOT WORKING 
} 

有什么我可以做的操纵DOM如果表单无效?换句话说,我该如何做这项工作?

由于提前,

克里斯托

+0

在成功函数的else部分隐藏tic? – Rasclatt

+0

我不认为这会起作用,因为else部分是在远程方法中被激活,如果满足所需的和电子邮件方法。 – christostsang

回答

0

在你验证的消息部分,如做你在remote您的数据也一样。做一个函数或一个匿名函数:

function resetCheck(message) 
    { 
     // Whatever code you want to use to remove check icon here 
     $("#checkmark").remove(); 
     // Just return the message 
     return message; 
    } 

// Messages part of your validation: 
... 
messages: { 
     email: { 
      required: resetCheck('Please enter your email'), 
      email: resetCheck('Please enter a valid email address') 
     } 
    }