2011-07-25 53 views
0

我不能放在一起javascript if statment to activate my submit button if(username_ready && email_ready) ("#register").removeAttr("disabled");所以我有兩個增值稅,如果他們都是真的我希望提交按鈕被激活。以上似乎不工作?我試圖把它拴住這個......刪除禁用,如果如果語句真的在JavaScript

$(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

你有一個巨大的多餘的代碼量。 我建議你創建一個函數來顯示消息,因爲所有正在改變的是「email」和「username」字樣 關於來自AlienWebguy的消息,請閱讀[prop](http://api.jquery.com/prop /) – mplungjan

回答

1

您聲明您傳遞給.moveTo()功能,這意味着你不能從那些特定功能的外部訪問他們的匿名函數中你username_readyemail_ready變量。而且這些變量是由兩個獨立的事件處理程序設置的,因此您需要以某種方式協調測試。

似乎簡單到我的方式是類似以下內容(這是一個過於簡單化的版本的代碼,所以你可能需要用它來擺弄了一下):

$(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

好吧,所以當我把它放在它阻礙ajax正常工作你會介意哪裏把if語句放在兩個ajax節中的任何一箇中,還是應該使它成爲它自己的函數?我在考慮把它放在真實陳述的其他部分。這樣它就在變量設置爲true後立即運行。謝謝。 – Osman

+0

我試過'data == no'條件後:'if(data =='no'){} else {} if(username_ready ...' – AlienWebguy

+0

謝謝,如果我在閱讀之前就知道了你會爲我節省一些時間!但是你是對的! – Osman