2013-10-19 61 views
0

我有一個窗體id ='form1'以及另一個'form2'。在提交時,我想將兩個表單都作爲對象傳遞給可以驗證它們的單個驗證函數。我很困惑如何做到這一點。 如果我這樣做引用一個表格分配給一個變量在jQUERY

var form = $('#form1'); 
Validate(form); 

我如何訪問變量形式的文本字段? 我不想編寫重複的驗證函數,因爲這兩種形式都與ALMOSt類似。

+1

您需要提供更多的像什麼是驗證和哪些信息字段等 –

+0

您可以將表單ID傳遞給函數而不是整個表單。 – Sergio

+0

@Arun:好吧,考慮一個帶有2個輸入數字的表單,並驗證用戶是否確實輸入了數字。我不認爲解決方案取決於驗證和表單內容。 –

回答

1

你也可以做如下...

A Complete example is here...

function validate(formid){ 
    var form = $("#"+formid); 
    var name = form.find("#name"); 
    var number = form.find("#number"); 
    alert(name.val()); 
    alert(number.val()); 
} 

    validate("form1"); 
    validate("form2"); 
+0

似乎是迄今爲止我的目的中最好的一個......謝謝Nikhil ... –

0

嘗試.find。您的表單將作爲上下文,您可以將其重用爲不同的表單。

見下文:

var form = $('#form1'); 
function Validate(form){ 
    var field1 = form.find(".field1"); 
} 
0

隨着字段的名稱,你可以這樣做:

function Validate(form) { 
    form = form[0]; // raw element 
    if (check_syntax(form.name.value)) { doSomething(); } 
    if (check_syntax(form.email.value)) { doSomething(); } 
    if (check_syntax(form.anotherfield.value)) { doSomething(); } 
} 

如果在表單中的每個字段都有一個名字,你可以通過形式訪問它。 fieldName或form ['fieldName']。

問候。

0

假設這兩種形式都差不多:

ValidateForm($("#form1, #form2")); 

function ValidateForm(forms){ 

    forms.each(function(){ 

     $(this).find('input[type=text]').each(function(){ 

     //Do something to validate text field 


     }) 

     $(this).find('input[type=checkbox]').each(function(){ 

     //Do something to validate checkbox 


     }) 

    }) 

} 
+0

謝謝。但是兩種表格都沒有在同一時間進行驗證。驗證是基於事件的。 –

相關問題