我所拥有的是一个应该计算税收的表格。我正在使用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;
}
所以从本质上讲,我需要动态地总结或总结克隆字段的值。它对克隆的领域不起作用,我知道我做错了什么......任何帮助? 感谢。
答案 0 :(得分:0)
.change(dave())
应该是
.change(dave)
或
.change(function() { dave(); })
答案 1 :(得分:0)
在将更改活页夹语句放在click事件处理程序之外后,您是否尝试过?
$("#clonetax").click(function() {
$("#newtaxrow:last").clone(true).insertAfter("#newtaxrow:last");
$("#newtaxrow:last").find( ":input" ).val( "0" );
});
$("#newtaxrow:last").find( ":input" ).change(dave);
答案 2 :(得分:0)
您正在选择#id(#newxx)并克隆那个。
然后你有2行具有相同的#id,它只会选择第一个#id。文档中的每个ID都被认为是独一无二的,因此在第一个ID之后继续搜索是没有用的。它将始终只返回它匹配的第一个。
我在这里为你做了一个例子:http://jsfiddle.net/xZ8xX/
正如您所看到的:它只提供1个警报,而有2个ID为#row
的div尝试更改
$('#newtaxrow') to $('.newtaxrow')
然后从使用'newtaxrow'作为ID更改为CLASS。或者至少停止使用具有相同ID的2行: - )
答案 3 :(得分:0)
您不能对多个元素使用相同的ID。在您的情况下使用类选择器而不是Id。
例如:
(' .classname')代替(' #idname'),如@DoXicK所建议