2011-07-25 136 views
0

我想通過javascript/jQuery做幾個驗證。我需要知道我可以使用什麼樣的邏輯。Javascript驗證衆多領域

我有大約15個字段來驗證。我想我是否可以驗證每個字段的返回值是true還是false。然後我會檢查是否有任何返回值是錯誤的。如果是,那麼表單不被驗證。這有道理嗎?

或者我是否必須經歷一組if嵌套的條件,一個接一個接一個?

PS:我不想使用jQuery驗證插件,因爲在我的表單中很少出現複雜問題。

讓我知道你認爲我該怎麼做。

謝謝。

+4

我們可以得到您的表單的一個例子嗎? – rlemon

+0

您可以採取任何形式的示例。我需要知道如何驗證幾個字段的邏輯。做,我使用嵌套的if-else?或分別驗證每個字段?我想我可能不得不單獨驗證每個字段,因爲如果表單無法驗證,那麼我需要告訴特定的錯誤消息。 – Blueboye

+0

我認爲你只是回答了你自己的問題;) – rlemon

回答

1

是的,這是你可以做到的一種方式,但顯然你必須在某種數據結構中包含你的結果。您可以擁有一個key-> value對象,其中key是您正在驗證的字段的id,然後根據您的驗證值爲true或false。然後只需遍歷對象並檢查錯誤值!

+1

如果出現錯誤,只需將該值作爲錯誤消息,如果它通過,則只需將值設置爲true。在這種情況下,你可以做if(value!= true){你的代碼...} – Evan

+0

$ .each(validationElements,function(key,value){{if(value!= true){your code ...} }); – Evan

0

我想補充然後

$('.required').each(function (i) { 

}); 
0

你可以使用一個錯誤的散列狀物體需要一個CSS類。

$('#target').submit(function (e) { 
    var errors = {}; 

    //No field should be blank 
    $('.required').each(function() { 
    if (!$.trim($(this).val())) errors[$(this).prev('label').text()] = 'is blank'; 
    }); 
    //Don't submit form on errors 
    //Show errors 
    if (!jQuery.isEmptyObject(errors)) { 
    $('.error').show().html("<p>Form couldn't be submitted because:</p>"); 
    $('.error').append(
    $.map(errors, function (type, error) { 
     return $('<p>', { 
     text: error + ' ' + type 
     }).get(); 
    })); 
    // Prevent the form from being submitted 
    return false; 
    } 
    $('.error').hide(); 
}); 

Customary jsFiddle link

0

這是一個無恥的插頭,但你有沒有試過regula?我正在積極開發它,我知道至少另一個人正在使用它(耶!)。它可能會解決您的一些複雜問題。另外,如果你可以用你的複雜情況更新你的問題,我可以告訴你如何在規則中做到這一點。它可以讓你不必編寫自己的驗證。

regula還將其驗證結果作爲約束違規數組返回,因此您可以看到哪些元素驗證失敗(以及其他情況)。

This answer有關regula功能的更多信息,如果你有興趣。