2011-07-25 13 views
0

javascript を組み立てることができないので、2つの変数があり、両方とも真である場合は、送信ボタンを有効にします。上記はうまくいかないでしょうか?私はこの中にそれをヒッチしてみました...javascriptでif文がtrueならremoveを無効にする

$(document).ready(function() 
{ 
$("#username").blur(function() 
{ 
    //remove all the class add the messagebox classes and start fading 
    $("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn(1000); 
    //check the username exists or not from ajax 
    $.post("user_availability.php",{ username:$(this).val() } ,function(data) 
    { 
     if(data=='no') //if username not avaiable 
     { 
     $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox 
     { 
      //add message and change the class of the box and start fading 
      $(this).html('This User name Already exists').addClass('messageboxerror').fadeTo(900,1); 
     var username_ready = false; 
     });  
     } 
     else 
     { 
     $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox 
     { 
      //add message and change the class of the box and start fading 
      $(this).html('Username available to register').addClass('messageboxok').fadeTo(900,1); 
      var username_ready = true; 
     }); 
     } 

    }); 

}); 
}); 
</script> 

<script src="jquery.js" type="text/javascript" language="javascript"></script> 
<script language="javascript"> 

$(document).ready(function() 
{ 
$("#email").blur(function() 
{ 
    //remove all the class add the messagebox classes and start fading 
    $("#box").removeClass().addClass('messagebox').text('Checking...').fadeIn(1000); 
    //check the username exists or not from ajax 
    $.post("email_availability.php",{ email:$(this).val() } ,function(data) 
    { 
     if(data=='no') //if username not avaiable 
     { 
     $("#box").fadeTo(200,0.1,function() //start fading the messagebox 
     { 
      //add message and change the class of the box and start fading 
      $(this).html('This email name Already exists have you forgot your password? ').addClass('messageboxerror').fadeTo(900,1); 
     var email_ready = false; 
     });  
     } 
     else 
     { 
     $("#box").fadeTo(200,0.1,function() //start fading the messagebox 
     { 
      //add message and change the class of the box and start fading 
      $(this).html('Tezac Hamra').addClass('messageboxok').fadeTo(900,1); 
      var email_ready = true; 
     }); 
     } 

    }); 

}); 
}); 

+0

あなたは巨大なを持っています冗長コードの量 メッセージを表示する機能を1つ作成することをお勧めします。メッセージはすべて「メール」と「ユーザー名」です。 AlienWebguyのメッセージについては、[prop](http://api.jquery.com)をご覧ください。/prop /) – mplungjan

答えて

1

あなたは、あなたがそれらの特定の機能を外部からそれらにアクセスできないことを意味.moveTo()関数に渡す無名関数内のあなたのusername_readyemail_ready変数を宣言しています。また、これらの変数は2つの独立したイベントハンドラの結果として設定されているので、何らかの形でテストを調整する必要があります。

私には最も簡単なようだ道は、(これはあなたのコードのオーバー簡易版ですので、あなたはそれを少しいじる必要があるかもしれません)、次のようなものです:

$(document).ready(function() { 

    // declare the flags outside the other functions 
    var username_ready = false, 
     email_ready = false; 

    function checkSubmitStatus() { 
    if (username_ready && email_ready) { 
     $("#register").prop('disabled',false); 
    } 
    } 

    $("#email").blur(function() { 
    // put your existing code here, with just a change 
    // where you set email_ready to not declare it with `var` 
    // (it's now declared above) 
    email_ready = true; // or false 
    checkSubmitStatus(); 
    } 

    $("#username").blur(function() { 
    // your other code here 
    username_ready = true; // or false 
    checkSubmitStatus(); 
    } 

}); 
3

disabledは今財産ではなく、属性です。

$("#email, #username").blur(function(){ 
    if(username_ready && email_ready) 
    { 
     $("#register").prop('disabled',false); 
    } 
}); 
+0

私はそれを置くとき、正しく動作することを妨げるでしょうか?2つのAjaxセクションのどちらかにifステートメントを置くべき場所を指しているか、それを独自の関数にする必要がありますか?私はそれを真の声明のelse部分に入れようと考えていました。そのようにして、変数がtrueに設定された直後に実行されます。ありがとう。 – Osman

+0

'data == 'no'){else {} if(username_ready ...' – AlienWebguy

+0

おかげさまで、私がこれを理解する前にこれを読んでいただきありがとうございます。 – Osman

関連する問題