我有点坚持这个非常简单(我敢肯定)的jQuery / Javascript问题。 这是代码:
jQuery.validator.addMethod("emailExists", function(value, element, param) {
var email = value || '';
var valid = 0;
$.ajax({
type: "POST",
url: param,
data: "email=" + email,
success: function(msg) {
if (msg != '' && msg)
{
valid = 0;
}
else
{
valid = 1;
}
}
});
return valid;
}, "* Email address already registered, please login.");
当用户在注册表单中键入他的电子邮件地址时,调用此函数,并且一切似乎都完美无缺,除了我的有效变量未更新,而当我使用警报框时,它已正确完成!< / p>
看起来它在AJAX完成之前返回值,任何想法?
干杯,
尼古拉斯。
答案 0 :(得分:0)
remote rule option允许你这样做:
$("#myform").validate({
rules: {
email: {
required: true,
email: true,
remote: {
url: "check-email.php",
type: "post",
data: {
username: function() {
return $("#username").val();
}
}
}
}
}
});
答案 1 :(得分:0)
您的代码失败,因为ajax异步工作。在调用成功函数之前达到return语句。要使其同步,请将async: false
添加到您的ajax调用中,如下所示:
$.ajaxA({
async: false,
type: "POST",
url: param,
data: "email=" + email,
success: function(msg) {
if (msg != '' && msg)
{
valid = 0;
}
else
{
valid = 1;
}
}
});