0

我所拥有的是一个应该计算税收的表格。我正在使用 clone() javascript 功能,但我遇到了一些问题。例如,如果我像这样存储我的基本工资和初级税:

基本工资 $5000

初级税 $50

在此下方是一行(newtaxrow),其中包含一个输入,该输入将要克隆的字段和一个按钮,其 id 为 clonetax。所以javascript:

$("#clonetax").click(function() {

        $("#newtaxrow:last").clone(true).insertAfter("#newtaxrow:last");
        $("#newtaxrow:last").find( ":input" ).val( "0" );
        $("#newtaxrow:last").find( ":input" ).change(dave()); 
});

方法dave()

function dave() {

    var val1 = parseInt(document.getElementById('salary').innerText);
    var val2 = parseInt(document.getElementById('tax').value);
    var val3 = parseInt(document.getElementById('newtaxfield').value);
    var total = val1 - (val2 + val3);
    document.getElementById("net").innerHTML = total;
}

所以本质上,我需要即时汇总或总结克隆字段的值。它不适用于克隆的字段,我知道我做错了什么...... 有什么帮助吗?谢谢。

4

4 回答 4

0
.change(dave())

应该

.change(dave)

或者

.change(function() { dave(); })
于 2013-01-17T12:05:47.700 回答
0

在将更改活页夹语句放在单击事件处理程序之外后,您是否尝试过?

$("#clonetax").click(function() {
        $("#newtaxrow:last").clone(true).insertAfter("#newtaxrow:last");
        $("#newtaxrow:last").find( ":input" ).val( "0" );
});
$("#newtaxrow:last").find( ":input" ).change(dave); 
于 2013-01-17T12:06:01.297 回答
0

您通过#id (#newtaxrow) 选择并克隆那个。

然后你有2行具有相同的#id,它只会选择第一个#id。文档中的每个 ID 都被认为是唯一的,因此在第一个 ID 之后继续搜索是没有用的。它总是只返回它匹配的第一个。

我在这里为你做了一个例子:http: //jsfiddle.net/xZ8xX/

如您所见:它只提供 1 个警报,而有 2 个 id 为 #row 的 div

尝试改变

$('#newtaxrow') to $('.newtaxrow')

然后从使用 'newtaxrow' 作为 ID 更改为 CLASS。或者至少停止使用具有相同 ID 的 2 行 :-)

于 2013-01-17T12:14:26.293 回答
0

您不能对多个元素使用相同的 id。在您的情况下,使用类选择器而不是 Id。

例如:

('.classname') 而不是 @DoXicK 建议的 ('#idname')

于 2013-01-17T12:20:38.917 回答