jQuery验证:远程方法

时间:2016-04-02 22:20:13

标签: javascript php jquery validation email

我有一个关于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'
        }
    }
});

假设以下电子邮件地址foo@bar.com在数据库中。然后,远程方法将返回true。同时满足requiredemail方法。因此,将显示绿色勾号。

问题:

如果我不满意其中一个必需的电子邮件方法,则会自动显示错误消息,但绿色勾号将保留。我试图在.valid()之后使用.validate()来检查表单无效的时间,然后删除绿色标记。它不起作用。

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

如果表单无效,我可以做些什么来操纵DOM?换句话说,我怎样才能做到这一点?

提前致谢,

的Christos

1 个答案:

答案 0 :(得分: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')
        }
    }