jQuery Validator插件 - 检查现有的电子邮件地址

时间:2016-10-17 09:47:43

标签: jquery ajax wordpress forms validation

我正在使用jQuery Validator插件来验证简报表单注册。 在文档和其他帖子之后,我使用远程验证方法来检查数据库中是否已存在电子邮件。

该方法有效。如果我输入现有地址,将显示远程消息,我将无法发送表单。 但是,如果我将电子邮件地址更改为不存在的电子邮件地址,则不会删除远程邮件,我将无法发送该表单。

我错过了什么吗?

这是我的jQuery:

$("#form").validate({
    rules: {
        email: {
            required: true,
            email: true,
            remote: {
                url: ajaxurl,
                data: {
                    action: 'my_action'
                },
                type: "post"
             }
        }
    },

    messages: {
        email: {
            required: "This field is required.",
            email: "Please enter a valid email address.",
            remote: "This Email address is already in use."
        }
    },
});

这是我的ajax函数(wordpress):

function my_action(){

    if ( !empty( $_POST['email'] ) ) {

        $emailArray = get_meta_values( 'email', 'my_post_type' );

        if (in_array( $emailArray, $_POST['email'] ) ) {
            echo "notexist";
        }
        else {
            echo 'exist';
        }
    }
}

1 个答案:

答案 0 :(得分:1)

来自文档(this reference

  

服务器端响应必须是JSON字符串,对于有效元素必须为“true”,对于无效元素可以是“false”,未定义或null,使用默认错误消息

您的PHP返回字符串“exists”和“notexist”而不是false / true(分别)。我认为你需要返回验证器可以理解的值。