jQuery表单验证无法继续验证

时间:2011-10-28 15:52:12

标签: jquery jquery-validate

我正在做的事情非常简单。我只想要一个基本的表单,但是如果它有效甚至一旦它挂起并且该字段的行为是有效的,即使它不是。

例如,如果我输入abc@abc.com作为电子邮件地址,并且检出它然后将其设置为有效。但是,如果我返回并输入一个存在的电子邮件,并且应该返回false(并且确实)状态不会改变。这也适用于equalTo方法。

这真是令人费解:/

这是JS [缩写名称]:

$('#register').validate({
    rules: {
        scq: {
            required: true
        },
        email: {
            required: true,
            remote: {
                url: 'ajax.php',
                type: 'post',
                async: false,
                data: {
                    type: 'email',
                    email: function() {
                        return $('#email').val()
                    }
                }
            }
        },
        email2: {
            equalTo: '#email'
        },
        pass: {
            required: true
        },
        pass2: {
            equalTo: '#pass'
        }
    },
    success: function(label) {
        label.html(' ').addClass('success');
    }
});

ajax.php的PHP:

if($row['id']) $success = true;
else $success = false;

echo json_encode($success);

1 个答案:

答案 0 :(得分:1)

  

...如果我回去并发送一封存在的电子邮件,应该返回   false(并且确实)状态不会改变。

那是因为您在.success处理程序中手动添加了一个名为success:的类。问题是,如果验证随后失败,则不会删除该类。

你可以让插件automatically apply/remove the appropriate class for success。 (它已经为错误类执行了此操作。)添加validClass:处理程序...

$('#register').validate({
    validClass: 'success',
    rules: { // etc. etc.

然后从.addClass('success')处理程序中删除success:


我不完全确定$success变量适合的位置,或者它是否是问题的一部分。

但是,to simply test if validation has passed or failed,您只需检查.valid()是真还是假......

if ($('#register').valid() == true) { alert('passed validation'); };

if ($('#register').valid() == false) { alert('failed validation'); };

我希望这会有所帮助。