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 かどうかを確認してから、2 番目の関数を呼び出す方法はありますか?

4

2 に答える 2

0

これには、jQuery Validate と呼ばれる組み込み関数がありremoteます。次のように指定すると、次のようになります。

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

email次に、 post 変数をcheck_email.phpスクリプトに自動的に送信します。そのスクリプトが"true"またはを返すようにします"false"。デフォルトの動作では、最初に電子メールをチェックしてから、AJAX スクリプトに送信すると思います。この例をここで見ることができます : http://jsfiddle.net/ryleyb/PdP69/コンソールにアクセスすると、メール アドレスが有効になるまでリモートに移動しないことがわかります。

于 2013-01-22T16:31:14.640 に答える
0

いいえ、外部から関数のローカル変数にアクセスすることはできません。

関数内でクロージャーを作成し、そのクロージャーを介してアクセスできますが、それは非常に異なります。

于 2013-01-22T14:46:59.503 に答える