2012-07-04 64 views
0

我試圖從我的JavaScript表單中檢索變量以確定表單是否已經過驗證。試圖檢索變量以檢查表單是否有效

所以,當用戶點擊'提交'按鈕時,這將被檢查。我已經設置它,所以它可以運行一個功能,當這個按鈕被點擊。

驗證碼:

$(document).ready(function(){ 
    $('#email').keyup(function() { 
     var email = $('#email').val(); 
     var minChars = 5; 
     var characters_error = 'Not enough characters'; 
     $('#email_status').text("Checking.."); 
     if (email != '') { 
      if($('#email').val().length <= minChars) 
      { 
       //if it's bellow the minimum show characters_error text 
       $('#email_status').text(characters_error); 
      } 
      else if ($('#email').val().length > minChars) 
      { 
       $.post('validation/refer_validation.php', {email: email}, function(data){ 
        $('#email_status').text(data); 
       }); 
      } else 
      { 
       $('#email_status').text(''); 
      } 
     } 
    }); 
}); 

按鈕代碼:

$(document).ready(function(){ 
    $("#submit").click(function() { 
     if (validated != true) 
     { 
      // Tell the user that there is an error in the form. 
     } 
    }); 
}); 

注意我是如何補充說,所謂的可變「驗證」,應設置的地方,但是這是我很困惑。我將如何更新變量並將其返回到按鈕?因爲驗證代碼包含在HTML表單中,但是如果我創建了一個變量,它可能會始終將其自身更新爲默認值,因爲該函數在調用時調用。

希望這一切都有道理。

+0

既然您已經使用jquery,爲什麼不去驗證插件? –

回答

1

與使用提交按鈕調用驗證函數不同,可以在窗體的onsubmit中調用它。如果你返回true,它會繼續並提交表單,如果你返回false,它將取消表單提交。

<form onsubmit="return validate();"> 

Onsubmit在提交實際發生之前被調用。

0

設置一個全局變量,即所有功能外,設置

var validated = false; 

然後設置相應的驗證,並應在提交讀取。

+0

要更新它,我只是使用validated = true; ? –

+0

確實如此。 – Brian

0

使用可變驗證爲全局變量, 每一個全成驗證使驗證爲真

然後正常工作,當你點擊提交按鈕

0

,而不是圍繞拋出外層變量,更好的辦法是記錄表單已被驗證爲表單本身的數據屬性的事實。

此外,單擊驗證按鈕忽略可能通過輸入鍵提交表單的事實,因此可以在表單的提交事件上進行驗證。

$(function() { 
    $('#some_form').on('submit', function() { 

     //validated before? forget it 
     if ($(this).data('validated')) { alert('already validated'); return false; } 

     //else, if first time, log that we're doing it 
     $(this).data('validated', 'true'); 

     //do validation... 
    }); 
});