2011-09-23 39 views
2

我不知道該怎麼辦,爲什麼它不工作這是我第一次嘗試這樣的事情。問題jQuery。。提交()和變量

這裏是它的一個小提琴http://jsfiddle.net/ProjectV1/LVPtN/

你會發現在JavaScript中我有一個變種錯誤,默認爲false。

如果出現錯誤,則爲真。

我在窗體上的每個輸入旁邊都顯示了錯誤的值。

如果變量錯誤是錯誤的,它應該提交表單並且不應該爲false。

發生錯誤時出現問題,然後糾正表單不會提交。

看小提琴。該表單直接用於Google測試。

+1

我認爲你需要做一個關聯數組與要檢查有關錯誤輸入每一個元素。然後,在執行提交事件時,可以遍歷數組查看哪些輸入處於錯誤狀態。如果有,請阻止提交完成。 –

+0

好的,現在試試這個,謝謝 –

回答

1

我覺得,問題是error在函數裏面會被調用模糊。當函數調用完成後,它就不確定了。這筆交易是變量應該是全球性的。你需要把這個$(document).ready()上述這應該工作:

var error = false; 

$('#joinForm input').blur(function() { 
    var id = $(this).attr('id'); 
    var val = $(this).val(); 
    if (id == 'email') { 
     $('#emailMsg').hide(); 
     if (val == '') { 
      error = true; 
      $('#' + id).after('<div id="emailMsg" class="error">' + error + '</div>'); 
     } 
     else { 
      $('#' + id).after('<div id="emailMsg" class="success">' + error + '</div>'); 
     } 
    } 
    if (id == 'cemail') { 
     $('#cemailMsg').hide(); 
    } 
    if (id == 'password') { 
     $('#passwordMsg').hide(); 
     if (val == '') { 
      error = true; 
      $('#' + id).after('<div id="passwordMsg" class="error">' + error + '</div>'); 
     } 
     else { 
      $('#' + id).after('<div id="passwordMsg" class="success">' + error + '</div>'); 
     } 
    } 
    if (id == 'cpassword') { 
     $('#cpasswordMsg').hide(); 
    } 
    if (id == 'username') { 
     $('#usernameMsg').hide(); 
     if (val == '') { 
      error = true; 
      $('#' + id).after('<div id="usernameMsg" class="error">' + error + '</div>'); 
     } 
     else { 
      $('#' + id).after('<div id="usernameMsg" class="success">' + error + '</div>'); 
     } 
    } 
    $('#joinForm').submit(function(){ 
     if (error == true) { 
      return false; 
     } 
     else { 
      return true; 
     } 
    }); 
}); 
+0

試過它沒有運氣:/更新

+0

好吧,我嘗試了你的想法後,我意識到,如果有錯誤因爲變量沒有在函數中設置,所以之前發生。所以我更新了它,以便error = false;在所有成功的狀態下,它現在可以與在函數外聲明的變量一起使用,值爲null ...感謝您的輸入。 –

+0

根據我的說法,驗證需要被放入一個不同的函數,它返回true或false。在模糊處,調用此函數更新錯誤變量。在validate()函數中,保留一個臨時變量,該變量最初表示爲true,如果有任何錯誤,它應該繼續前進,但不允許任何其他字段驗證將其值從false更新爲true。最後返回temp變量的狀態。 –