在输入javascript时获取用户输入

时间:2013-01-17 12:00:09

标签: javascript jquery javascript-events

我所拥有的是一个应该计算税收的表格。我正在使用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 个答案:

答案 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所建议