2013-10-19 40 views
2

將以下兩個功能組合在一起時,可以將它們分開嗎?將兩個功能組合在一起單獨使用時

cloneMe函數克隆一組字段,並給它們新的名稱和ID,所以使用foreach我可以讓每個組作爲一個單獨的行放入數據庫。

addRow函數爲克隆組添加了2個字段('Bracing'和'Qty'),可以添加無限量的這些字段,但需要將其視爲由cloneMe創建的克隆組的一部分所以我可以把這兩個字段放入他們自己的單獨數據庫表中。

到目前爲止,一切我都試圖讓addRow的產生領域被視爲cloneMe組的一部分,已導致addRow領域被看作是空的,只有非常一日一個是第一組的一部分,無法添加任何東西到第二組或超出組。

我已經把所有東西都放入了jsFiddle:http://jsfiddle.net/AnJzU/雖然addRow似乎不想在那裏工作。

cloneMe功能;

$(document).ready(function() { 
    var newNum = 2; 
    cloneMe = function(el) { 
     var newElem = el.clone().attr('id', 'container' + newNum); 
     newElem.html(newElem.html().replace(/form\[1\]/g, 'form['+newNum+']')); 
     newElem.html(newElem.html().replace(/id="(.*?)"/g, 'id="1'+newNum+'"')); 
     $('#cloneb').before(newElem); 
     newElem.find('.delete_name').html('<p class="rem_field"><a href="#"><span>X</span></a></p>'); 
     newNum++; 
    }; 

    $(document).on('click', '.rem_field', function() { 
     $(this).closest('.instance').remove(); 
     return false; 
    });  

}); 

addRow功能;

var rowNum = 0; 
function addRow(frm) { 
    rowNum ++; 
    var row = '<span id="rowNum'+rowNum+'"><table cellpadding="0" cellspacing="0" border="0"><tr><td><label for="test">Bracing:</label><input type="text" name="form['+rowNum+'][brac]['+rowNum+'][bracing]" size="4" class="brac" value=""></td><td><label for="test2">Qty:</label><input type="text" name="form['+rowNum+'][brac]['+rowNum+'][qty]" class="qty" value=""></td><td><input type="button" class="rem" value="X" onclick="removeRow('+rowNum+');"></td></tr></table></span>'; 
    jQuery('#itemRows').append(row); 
} 

function removeRow(rnum) { 
    jQuery('#rowNum'+rnum).remove(); 
} 

回答

0

您的cloneMe代碼始終克隆隱藏的表單模板,其ID爲「container1」。如果您希望在添加額外的支撐和數量行後克隆表單,則需要將正確的元素傳遞給cloneMe函數。由於第一容器具有「容器」,而不是一個id「container1」你cloneMe通話將需要:

cloneMe($('#container')) 

當然,這不是動態的。這將始終克隆頂部容器。如果你想克隆列表,最新的容器,就是好像你打算,你需要你的「更多」按鈕是像這樣的東西更動態:

<input type="button" id="cloneb" value="More Details" onclick="cloneMe($('#container' + (newNum - 1)));" /> 

這永遠會克隆當前newNum變量之前的數字。您應該廢除您的「container1」隱藏模板,只需調用您的第一個容器「container1」即可。否則,onclick更改將不起作用,因爲它仍然會克隆隱藏的容器,而不是您添加新行的第一個容器。

+0

對不起,我認爲你已經錯過了一點理解,我想cloneMe函數克隆容器之一,因爲它目前是,我意味着addRow函數添加到克隆組,就像他們是它的一部分。下面是我的意思的現場版本,你會注意到我也有問題http://elcu.info/system/ –