2013-10-29 61 views
1

我有一個15個字段的表單(包括輸入類型,選擇框,文本區域)。each()與多個ID或類?

我可以編寫一個函數來以普通的方式驗證這個表單,但這不是智能編碼。我需要在這種情況下使用每一個。

這是我在想什麼:?

$("#id1, #id2, #id3... #id15").each(function(){ 
    if ($(this).val == "") { 
     $(this).closest("#error").css("display", "block"); 
    } 
}) 

如果這個驗證是基於類或基於ID,我該怎麼正確的方法正在使用的每個()在正確的背景下我?

+1

要麼將​​工作,雖然'class'將是分組更多的語義。你正確使用'each'。 –

+0

使用'required'屬性,它會自動阻止提交空字段(至少在現代瀏覽器中)。 – ComFreek

+0

您是否驗證特定父級中的所有輸入? – iambriansreed

回答

7

你可以在這裏使用:input選擇器選擇表單內的所有輸入元素,如:

$("#formID :input").each(function() { 
    if ($(this).val() == "") { 
     $(this).closest("#error").css("display", "block"); 
    } 
}); 

或者,也許一個特定的類添加到所有要驗證像validate輸入和不喜歡:

$(".validate").each(function() { 
    if ($(this).val() == "") { 
     $(this).closest("#error").css("display", "block"); 
    } 
}); 

文檔:http://api.jquery.com/input-selector/

描述:選擇所有輸入,textarea,選擇和按鈕元素。

+0

正如我所說我有選擇框,文字區域也..我知道這個解決方案..但我想在一個單一的循環中做到這一切 –

+0

@Onaseriousnote這是一個單一的循環。 – iambriansreed

+0

但這不會包括選擇框,文本區 –

-1

如果您有多個輸入,選擇和表單元素,請爲每個元素添加一個類,如「input-group」,然後遍歷該組。

$("form .input-group").each(function(){ 
    if ($(this).val == "") { 
     $(this).closest("#error").css("display", "block"); 
    } 
}) 
+0

-1'$(this).val'無效,此答案不會在討論中添加任何新內容。 – iambriansreed

2

或窗體裏面有id屬性任何標記

$('form *[id]') 

或name屬性會更好

$('form *[name]')