1

我想在电子邮件地址有效后检查电子邮件字段是否已存储在数据库中。但是,我的两个功能都可以同时正常工作。我希望在“检查电子邮件是否有效”生效后运行“检查电子邮件是否在数据库中”功能。

电子邮件验证:

$(document).ready(function(){
$("#SignUp").validate({
    rules:{
        email:{
            required:true,
            email:true
        },
    },
    messages:{
        email:{
            required:"Enter your email address",
            email:"Enter valid email address"
        },
        gender:"Select Gender"
    },
    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');
    }
    });
});

电子邮件可用性检查:

    $(function()
{
    $('#email').keyup(function()
    {
        var email=$(this).val();
        if(email!=''){
   //$('.check').show();
   $('error').fadeIn(400).html
   ('<img src="/img/ajax-loading.gif" />');
   var dataString = 'email='+ email;
   $.ajax({
    type: "POST",
    url: "pages/check_email.php",
    data: dataString,
    cache: false,
    success: function(result){
        if(result=='Available'){
            $('.check').html(email+' Avaliable');
            $('#create').attr('disabled', '');
            $('#create').attr('value', 'Active');
            $("#email").removeClass("red");
            $("#email").addClass("white");
        }else{
            $('.check').html(email+' '+result);
            $('#create').attr('disabled', 'disabled');
            $('#create').attr('value', 'Deactive');
            $("#email").removeClass("white");
            $("#email").addClass("red");
        }
    }
   });
}else{
    $('.check').html('');
    $('#submit').attr('disabled', 'disabled');
    $('#submit').attr('value', 'Deactive');
}
});
});

有没有办法访问第一个函数来检查 email:true,然后调用第二个函数?

4

2 回答 2

0

为此,jQuery Validate 有一个内置函数 - 称为remote. 如果您像这样指定它:

$("#SignUp").validate({
rules:{
    email:{
        required:true,
        email:true,
        remote: 'pages/check_email.php'
    },
},
//rest of options
});

然后它会自动将emailpost 变量发送到您的check_email.php脚本。让该脚本返回"true""false". 我相信默认行为会首先检查电子邮件,然后将其发送到您的 AJAX 脚本。您可以在此处看到一个示例:http: //jsfiddle.net/ryleyb/PdP69/ 请注意,在 jsfiddle 上,由于站点的工作方式,您在指定远程页面时必须更加复杂......观看控制台虽然,你会看到它不会去远程,直到电子邮件地址是有效的。

于 2013-01-22T16:31:14.640 回答
0

不,您不能从外部访问函数局部变量。

您可以在函数内部创建一个闭包并通过该闭包访问它,但那是非常不同的。

于 2013-01-22T14:46:59.503 回答