2011-09-23 95 views
0

我是新來的jQuery和JavaScript,我主要用於PHP。我正在升級我的網站,因此它包含一個小Ajax以提高可用性並讓我忙!jQuery表單驗證問題?

我正在使用這個簡單的小腳本,我扔在一起的登錄頁面。所有工作都很好,但我想問一些問題!

$('#loginForm .submit').click(function(event) { 
    $('.error').hide(); 
    event.preventDefault(); 
    var errors = 0; 
    var loginEmail = $('#loginEmail').val(); 
    var loginPassword = $('#loginPassword').val(); 

    if (loginEmail.length == 0) { 
     $('#loginEmail').after('<div class="error"></div>'); 
     errors++; 
    } 

    if (loginPassword.length == 0) { 
     $('#loginPassword').after('<div class="error"></div>'); 
     errors++; 
    } 

    if (!errors) { 
     $('.submit').submit(); 
    } 
}); 

您會注意到該函數內的第一行代碼是;

$('.error').hide(); 

現在在PHP中,我通常會使用;

if (isset(........)) { 

是否有simliar辦法做到這一點在JavaScript當用戶第一次啓動會出現與類.error沒有HTML功能?

另外我試圖給函數添加一個新參數以及事件參數,我該怎麼做?我試過以下?

$('#loginForm .submit').click(function(event, var) { 

$('#loginForm .submit').click(function(event var) { 

$('#loginForm .submit').click(function('event', 'var') { 

而且都似乎沒有工作。然後我再次通過PHP,jQuery/JavaScript不是我的強項!

感謝

回答

0

執行行動之前,您可以檢查是否通過使用下面的語法功能$()選定的元素:

if ($('.error').length) 
{ 
    // actions 
} 
0

如果.error - DIV存在於DOM默認情況下,是剛剛隱藏,你不能只檢查長度$('.error'),因爲即使它是空的,長度將返回1.

你可以這樣做:

if($('.error').html().length !== 0){ 
    //do something 
} 

這將檢查錯誤div的包含字符串,因此,如果它是空的,長度將返回0

不過我建議設置一個布爾變種。如果發生錯誤,它將被設置爲false,並且您可以檢查該var,並且不必爲這樣簡單的任務查詢DOM元素。

你的第二個問題,嘗試這樣的事情:

$('#loginForm .submit').bind("click", {variable1: var}, handleSubmit); 

function handleSubmit(event){ 

    var passedVar = event.data.variable1; 
}