我在我的表单中使用了validate插件,我在使用远程功能时遇到了一些困难。
我正在使用它将ajax发布到文件,而该文件又返回true或false。 当我输入一个被采用或采用用户名的电子邮件时,它会发出正确的错误消息警告。
但是当ajax返回true时,它不会做任何事情。也就是说,直到我单击电子邮件输入框,然后单击以重新触发它。然后它会验证它。我已经尝试了很多不同的解决方案,比如onblur触发器等。事情是,所有其他输入字段开箱即用,没问题。 checkmail文件很直接,无论是真还是假,都没有真正的问题..
这是一个电子邮件检查和用户名检查,两者的规则相同,除了它调用的文件:
$("#registerHere").validate({
onkeyup: false,
onblur: true,
rules:{
usr_name: {
required: true,
minlength: 5,
remote: {
url: "inc/checkuser2.php",
type: "post",
async: false
}
},
full_name:"required",
blog_name:"required",
user_email: {
required: true,
email: true,
remote: {
url: "inc/checkmail.php",
type: "post",
async: false,
data: {
user_email: function() {
return $("#user_email").val()
}
}
}
},
pwd:{
required:true,
minlength: 6
},
cpwd:{
required:true,
equalTo: "#pwd"
},
gender:"required"
},
messages:{
usr_name:{
required: "Velg et brukernavn",
minlength: "Minimum 5 bokstaver",
remote: "Dette brukernavnet er opptatt"
},
full_name:"Skriv inn navnet ditt",
blog_name:"Velg en tittel til bloggen din",
user_email:{
required: "Fyll inn e-post adressen din",
email:"Dette er ikke en gyldig e-post adresse",
remote:"Denne e-posten finnes allerede"
},
pwd:{
required:"Velg passord",
minlength:"Passordet må ha 6 tall og bokstaver"
},
cpwd:{
required:"Gjenta passordet",
equalTo:"Passordene er ikke like"
},
gender:"Velg kjønn"
},
errorClass: "help-inline",
errorElement: "span",
highlight:function(element, errorClass, validClass) {
$(element).parents('.control-group').addClass('error');
},
unhighlight: function(element, errorClass, validClass) {
$(element).parents('.control-group').removeClass('error');
$(element).parents('.control-group').addClass('success');
}
});
这是我的checkmail.php(一旦工作就会清理):
$duplicate = mysql_query("select count(*) as total from users where user_email='$user' ") or die(mysql_error());
list($total) = mysql_fetch_row($duplicate);
if ($total > 0)
{
$valid = 'false';
} else {
$valid = 'true';
}
echo $valid;
exit;
这并不重要,因为表格似乎提交了,但是当我如此接近我想要的时候,我会讨厌离开它!
希望这是可以理解的,我真的很感激任何帮助,因为我阅读并尝试谷歌给我的一切!
答案 0 :(得分:0)
我相信在表单验证插件中使用AJAX时,您需要使用回调并返回元素。
onkeyup: function(element) {
this.element(element);
}
这样做的缺点是它会在每个键盘上执行你的AJAX,因此你需要在你的回调中执行某种检查。例如:
onkeyup: function(element) {
if ( element.type == 'password' )
this.element(element);
else
return true;
}