0

私はこれを行うための最良の方法を探し続けてきましたが、決定的な答えを思いつくことはできません

データベースに既に存在するかどうかを確認するphpスクリプトに値を投稿して、フォームを検証しています。検証する必要があるフィールドがいくつかありますが、そのうちの 1 つは電子メールです。

次の基本的なコードが配置されています

jQuery(document).ready(function(){

    jQuery("#signup_submit").click(function(){

        var u_email = jQuery('#signup_email').val();
        var email_check = 0;
        var email_checked = "no";


        if (jQuery('#signup_email').val()) {

            jQuery.post("/check-username-email",{ user_email:jQuery('#signup_email').val() } ,function(data){

            //if email not avaiable
              if(data == 0) {
                email_checked = "yes";
                 email_check = 0;
                 alert(email_check + " 1");
              }
              //if email is not vaild
              else if(data == 2){
                email_checked = "yes";
                email_check = 0;
                alert(email_check+ " 2");
              }else{
                email_checked = "yes";
                email_check = 1;
                alert(email_check + " 3");
              }

            });

        }else{
            email_checked = "yes";
            email_check = 0;
            alert(email_check + " 4");
        }
// IN NEED THIS NEXT BIT TOW WAIT UNTIL THE PREVIOUS SECTION HAS FINISHED BEFORE EXECUTING

    if (email_checked=="yes"){
            if (email_check==1){
                alert("ok");
            }else{
                alert("notok");
            }
        }else{
            alert("email not checked");
        }


        //jQuery("#signup_form_standalone").submit()    

    });

});

私の問題は、最初の関数が検証される前に、一番下の if ステートメントが実行されていることです。

jQuery.when と callbacks() について読んで、試してみましたが、必要に応じて動作させることができません。

私は何を間違っていますか?私がやろうとしていることを達成するための簡単な方法が必要ですが、それが何であるかはわかりません:)過去にアニメーションとの整列を解除するときにキューとコールバックを使用しましたが、これらは適用されないようですここも同じ。

乾杯。

4

1 に答える 1

0

これを処理するために HTML 属性 required="required" または simple required を使用することを考えましたか。もちろん、パターンとメッセージも定義することで、これをさらに安全にすることができます。これはほとんどのブラウザーで非常にうまく機能するため、厄介でバグのある JavaScript の束を避けるために試してみる価値があります。PHPサーバー側がコードが完璧であることを確認し、クライアント側で起こることはクライアント側のビジネスであることを絶対に確認してください。

たとえば、登録時のメール入力にはこれが気に入っています。

<label title="Must be a valid email address for account activation. It will remain private and will not be revealed to other users." for="email">Email:</label>
<input required="required" pattern="^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$" type="text" id="email" name="email" value="" placeholder="Email Address">

これにより、問題の大部分がキックバックされ、ユーザーが何かを見逃していたり​​、スペルを間違えている可能性があることがわかります。次に、お気に入りの PHP 関数を使用して、メール アドレスをさらに検証します。

于 2013-09-16T02:09:13.143 に答える