2010-02-02 71 views
0

我使用clone動態地將一行插入到使用JQuery的表中。使用JQuery限制動態添加的錶行的數量

$('#Clone').click(function() { 

    //put jquery this context into a var 
    var $btn = $(this).parent(); 

    //use .closest() to navigate from the buttno to the closest row and clone it 
    //use clone(true) to pass events to cloned item 

    var $clonedRow = $btn.closest('tr').clone(true).insertAfter($btn); 

}); 

最終用戶將控制插入新行。我需要限制新行的數量爲5.有沒有辦法用cookie或其他方法(數組)來做到這一點。我可以有多個表有自己的唯一ID,因此它需要與頁面上的多個表一起工作。

希望你能幫上忙。

回答

0

您可以隨時簡單地爲每個表使用一個變量來跟蹤添加的行數。

或者另一種選擇是使用jQuery的data()方法,它允許你直接在dom元素中存儲數據。 click事件會查找它的表,並在每次添加行時更新表的data(),並在達到最大值時阻止進一步的添加。

編輯:更正的代碼與檢查,看看該計數是未定義的,並刪除錯位的括號。

$('#Clone').click(function() { 
    var $btn = $(this).parent(); 
    if($btn.closest('table').data('theCount') == undefined) { 
     $btn.closest('table').data('theCount', 0) 
    } 
    var currentCount = $btn.closest('table').data('theCount'); 

    if(currentCount < 5) { 
     $btn.closest('tr').clone(true).insertAfter($btn); 
     $btn.closest('table').data('theCount', currentCount + 1); 
    } 
}); 

http://api.jquery.com/data/

+0

我喜歡JQuery數據方法;但點擊不會插入新行。 currentCount引發了一個undefiend錯誤。它可能是$(btn)? – Rob 2010-02-03 18:17:53

+0

@Rob - 我更新了代碼以添加if語句來檢查數據元素'theCount'是否已被定義(如果不是,則將其初始化爲0)。我還在一個地方輸入了$(btn),而不是$ btn。 現在應該工作。 – user113716 2010-02-03 18:59:28

+0

我有一個使用jquery.validate插件進行驗證的文本框。原始行中的文本框經過驗證,但克隆的行不是?你知道如何讓插件在克隆的文本框或其他輸入上工作嗎? – Rob 2010-02-17 18:43:13

0

您可以只計算返回的元素數量。

function countRows() { 
    return $("#table-id tr").length + $("#table2-id tr").length; // etc, for all table ID's. 
} 

或者,您可以在用戶添加的行中添加一個特殊的類。

function countRows() { 
    return $("tr.new").length; 
} 
1

變量怎麼樣?

function addClick(identifier, max){ 
    var i = 0; 
    $(identifier).click(function() { 
    if (i < max){ 
     //add row 
     i++; 
    } 
    } 
} 
addClick("#Clone", 5); 

或者,您也可以在用戶添加的類上設置不同的類,然後在添加函數中對它們進行計數。

0

您也可以使用數據屬性在桌子上

var i = $('#tableID').data('userAddedRows');//of course you need to check there is a value and such 
    i++; 
    $('#tableID').data('userAddedRows',i); 

然後,只需檢查以確保我小於允許量

+0

同樣的問題,我得到帕特里克的片段。我沒有定義。 – Rob 2010-02-03 18:26:16

相關問題