我正在做的事情非常简单。我只想要一个基本的表单,但是如果它有效甚至一旦它挂起并且该字段的行为是有效的,即使它不是。
例如,如果我输入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);
答案 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'); };
我希望这会有所帮助。