2013-02-22 92 views
4

我正在使用bassistance.de/jquery-plugins如何在jQuery驗證中驗證克隆元素?

這是默認的jQuery表單驗證服務。

我知道,有關jQuery驗證問題問了太多次,但我的問題是
有點不同。

我有一個形式與一個文件輸入和我正在克隆像下面

var picFields = $('#file').clone(true); 

和附加到表格上載多個文件。

而克隆我有「必要」名稱類以及將所述規則等

$('.required').each(function() { 
$(this).rules('add', { 
    required: true, 
}); 
}); 

和最初驗證等

$('#form').validate(); 

其驗證只有第一元件並非所有的動態添加的字段。

+1

您的整個'.rules('add')'方法是多餘的。如果這些字段已經有'required'的'class',那麼這個字段將自動成爲'required'而不需要做任何事情。但是,如果您未在每個字段中包含唯一的'name'屬性,那麼您將遇到確切的問題。 – Sparky 2014-09-21 02:31:46

+0

js問題的提示:http://jsfiddle.net/nvK7F/。我正在尋找解決方案... – 2015-04-14 16:33:34

回答

2

每個輸入都需要一個唯一的名稱。插件沒有考慮像 name =「location []」這樣的東西,你必須添加一個索引(正確的是name =「location [0]」)。 對於克隆的元素,我首先獲取html「clone()。html()」,然後用一個計數器號替換[0] 我跟蹤例如:.replace(/ [0]/g,「[」+ cont + 「]」)

然後我可以安全地將生成的html附加到DOM,並且插件的工作方式與往常一樣。

請記住:JQUERY VALIDATE需要輸入中的唯一名稱!我爲此付出了很多時間。

0

解決它!

什麼我以前做的:在我克隆對象,我叫創建驗證功能:

function add_another_form(){ 
    var new_form = jQuery(".class").clone(true); 
    new_form.appendTo(".parent"); 
    add_validation_for_forms();//attach again the validation ! 
} 

function add_validation_for_forms(){ 
    jQuery(".class").validate({....}) 

但是,這是行不通的,所以我只是在那裏使用的。每個功能,它現在可以工作...

function add_validation_for_forms(){ 
    jQuery(".class").each(function(){ 
     jQuery(this).validate({....})