2011-07-26 69 views
0

任何人都可以告訴我這個代碼有什麼問題,即時驗證表單,確保所有字段都有文本,然後任何人都可以提交。一切正常,直到我把在!='' var.我肯定ID是正確的表單驗證!=''in if語句?

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


$(document).ready(function() { 

// declare the flags outside the other functions 

var username_ready = false; 
var email_ready = false; 




function checkSubmitStatus() { 
var emailvalue = $("#email").val(); 
var usernamevalue = $('#username').val(); 
var firstvalue = $('#first').val(); 
var lastvalue = $('#last').val(); 
var passwordvalue = $('#password').val(); 
if (username_ready && email_ready && emailvalue!='' && usernamevalue!='' && firstvalue!='' && lastvalue!='' && passwordvalue!=''){ 

    $("#register").prop('disabled',false); 
} 
else {$("#register").prop('disabled',true);} 
} 

,這裏是我的表單代碼,以便您可以如果多數民衆贊成這個問題看...

<p>First Name: <input id="first" type="text" name="name" maxlength="100"> </p> 
<p>Last Name: <input id="last" type="text" name="name" maxlength="100"> </p> 
<p> Email: <input type="text" name="email" id="email" maxlength="100" /> 
<span id="box" style="display:none"></span></p> 
User Name : <input name="username" type="text" id="username" value="" maxlength="15" /> 
<span id="msgbox" style="display:none"></span> 
<p> Password: <input id="password" type="password" name="password"> </p> 

+5

我錯過了將username_ready和email_ready設置爲true的部分。 – Brain2000

+1

那麼,它做了什麼? – deceze

+0

這就是我所知道的一部分,它的ajax檢查用戶名或電子郵件是否已經存在,如果他們不這樣做,如果他們設置爲false,則設置爲true。 False停用提交按鈕,true激活。所以如果聲明應該激活它。 – Osman

回答

4

您錯誤地拼寫了您的變量名firstvalue

firstvale!='' 

個編輯

移動這5行:

var emailvalue = $("#email").val(); 
var usernamevalue = $('#username').val(); 
var firstvalue = $('#first').val(); 
var lastvalue = $('#last').val(); 
var passwordvalue = $('#password').val(); 

從他們向右function checkSubmitStatus(){在哪裏和你的大,如果上述聲明。

他們現在在哪裏,他們只被分配一次,當頁面第一次加載時,我假設其中至少有一個是空的,表單的值。

您需要將這些行移動到您的checkSubmitStatus()函數中,以便在函數調用時它們會更新。最終結果應該如下所示:

var username_ready = false; 
var email_ready = false; 

function checkSubmitStatus() { 

    var emailvalue = $("#email").val(); 
    var usernamevalue = $('#username').val(); 
    var firstvalue = $('#first').val(); 
    var lastvalue = $('#last').val(); 
    var passwordvalue = $('#password').val(); 


    if (username_ready && email_ready && 
     emailvalue!='' && usernamevalue!='' && 
     firstvalue!='' && lastvalue!='' && passwordvalue!=''){ 

     $("#register").prop('disabled',false); 
    } else { 
     $("#register").prop('disabled',true); 
    } 
} 
+0

哈哈,我沒有但多數民衆贊成沒有問題,我試圖通過逐個刪除不同的部分解決問題,它只適用於當username_ready && email_ready是if語句的唯一部分。所以var或者我的代碼中的!=''部分有問題? – Osman

+0

@ user860869你從哪裏調用函數'checkSubmitStatus()'?那時候''('#email').val()'等的值可能已經改變了。嘗試將你的'var emailvalue = $(「#email」).val();'和它下面的四條類似的行移動到函數的開頭。 – Paulpro

+0

他們是在開始......第一件事,並沒有其他由該名稱定義的變種,甚至沒有接近。 – Osman

0

從您的代碼判斷,我感覺它是從代碼的不同部分複製粘貼在一起的感覺。可能發生的是在調用checkSubmitStatus時,emailvalue,usernamevalue等實際上超出了範圍。我可能也是錯的,但基於所提供的代碼很難說更多,因爲它似乎是正確的。

您可以在if語句之前執行alert(emailvalue);以查看您是否獲得undefined或某個值。如果它沒有定義,你可能有一個範圍問題。

從上面的代碼,它似乎也分配了這些變量的值之前,真正輸入或表單提交。

+0

omg多數民衆贊成在你的傢伙是偉大的我不相信我沒有看到。 – Osman

+0

感謝我得到它的功能,var之前定義的功能!我的錯。 – Osman