2016-09-11 47 views
-1

我有一個用戶生成的表,其中包含每行中的數量輸入字段,當它發生變化時,我想觸發進一步的計算。該表可以有多行,因此也可以有多個數量字段的實例。多個事件列表器

以下代碼片段將偵聽「qty」中的更改,但這似乎只適用於表格的第一行。有誰知道我可以如何讓事件偵聽器適用於「數量」字段的所有實例。

// On Quantity Change: 
var qtys = document.getElementsByName("qty[]"); 
var i; 
for (i = 0; i < qtys.length; ++i) { 
    qtys[i].addEventListener("change", totalIt, false); 
    qtys[i].addEventListener("input", totalIt, false); 
} 

下面是代碼的的jsfiddle ...... http://jsfiddle.net/jDfFU/95/

+0

你沒有把它的HTML端。所以我想這是因爲你的名字只是第一排。 –

+1

另一種可能性是該代碼在生成整個表之前運行。沒有辦法知道肯定沒有看到[完整的例子](http://stackoverflow.com/help/mcve)。 – JJJ

+0

也給我們一些html代碼。 –

回答

1

看起來像其他錶行動態添加 - 而不是添加事件監聽到他們,你可以添加它的父表,並檢查目標元素的名稱,或者您可以將該事件綁定到要動態添加的每一行。

例如,對於選項1 -

var table = document.getElementById('dataTable'); 
dataTable.addEventListener('change', function(e){ 
    if (e.target.getAttribute("name") === 'qty[]') { 
     totalIt(); 
    } 
}); 

dataTable.addEventListener('input', function(e){ 
    if (e.target.getAttribute("name") === 'qty[]') { 
     totalIt(); 
    } 
}) 
+0

很酷,謝謝,雖然如果我使用它似乎打破了代碼,即不能添加行,任何更多,任何想法可能會出錯? – user1419810

+0

我有一個小的語法錯誤,請再試一次 – naortor