2010-03-21 65 views
1

嗨有兩種形式完全相同的驗證規則,但不同的ID,我想合併成只有一個功能。我怎樣才能做到這一點?jQuery驗證,相同功能的多個表單ID

var validator = $("#ValidateForm1").validate({ 
errorPlacement: function(error, element) { 
    if (element.is(":radio")) 
     error.appendTo(element.parent().next().next()); 
    else if (element.is(":checkbox")) 
     error.appendTo (element.next()); 
    else 
     error.appendTo(element.parent().next()); 
}  
}); 

var validator = $("#validateForm2").validate({ 
errorPlacement: function(error, element) { 
    if (element.is(":radio")) 
     error.appendTo(element.parent().next().next()); 
    else if (element.is(":checkbox")) 
     error.appendTo (element.next()); 
    else 
     error.appendTo(element.parent().next()); 
}  
}); 

回答

3

如果您不需要驗證變量(你正在重新定義,所以會出現你不這樣做),只需使用一多重選擇:

$("#validateForm1, #validateForm2").validate({ 
    errorPlacement: function(error, element) { 
    if (element.is(":radio")) 
     error.appendTo(element.parent().next().next()); 
    else if (element.is(":checkbox")) 
     error.appendTo (element.next()); 
    else 
     error.appendTo(element.parent().next()); 
    }  
}); 

或者,如果你有很多像這樣的形式,只是給他們一個類,像這樣:

<form id="validateForm1" class="myFormClass"></form> 
<form id="validateForm2" class="myFormClass"></form> 
.... 
<form id="validateFormX" class="myFormClass"></form> 

而這樣的選擇:

$(".myFormClass").validate({ 
+0

第二種解決方案不起作用,因爲提交一份表格,就驗證所有形式。你可以重寫提交併通過表單來驗證,就像這裏:http://stackoverflow.com/questions/8757057/jquery-validate-not-working-on-multiple-form – 2013-11-22 20:09:56

+0

剛剛嘗試過的第一個解決方案,它不' t工作,驗證只需要一個選擇器。 – 2013-11-22 20:29:24

0

充分利用formId作爲變量

var myFormId = "ValidateForm1"; // e.g. get the form id by using javascript 

.... 

var validator = $("#"+ myFormId).validate({ 
errorPlacement: function(error, element) { 
    if (element.is(":radio")) 
     error.appendTo(element.parent().next().next()); 
    else if (element.is(":checkbox")) 
     error.appendTo (element.next()); 
    else 
     error.appendTo(element.parent().next()); 
}  
});