1

我有动态生成文本框的代码。我想将数量和速率文本框的值相乘并将结果显示在总文本框中并将其发布到下一页。

小提琴http://jsfiddle.net/hEByw/显示了文本框是如何动态生成的。

我尝试了以下代码部分来将两个文本框值相乘,但它对我不起作用。请参阅小提琴以获取完整代码。

    //To multiply two textbox values
      $('#qty + counter + ').keyup(calculate);
      $('#rates + counter + ').keyup(calculate);
      function calculate(e)
    {
       $('#total + counter + ').val($('#qty + counter +').val() * $('#rates +         counter+').val());
    }

任何人都可以建议我哪里出错或正确的做法。我是 jquery 的新手。任何帮助表示赞赏。在此先感谢。

4

3 回答 3

0

我认为问题出在这里

$('#rates + counter + ')

应该做到

$('#rates' + counter)

编辑 :

我用jsfiddle分析了它,但问题出在你的逻辑上。按键时如何获取计数器。将使用计数器,一旦添加控件,它将未定义。

编辑 2:

最后我想出了答案。我不得不稍微调整一下,但我希望它会让你满意

检查这个JsFiddle 链接

很抱歉编辑您自己的链接

我刚刚添加了一个标题属性,我使用它而不是计数器变量。

e.target.title For the counter

title = '+ counter + ' in your HTml

参考链接。希望这可以帮助你

于 2013-05-24T12:29:42.920 回答
0

只要您使用的是 jquery 1.4+:

$('#qty' + counter).live('keyup', function(){ calculate(counter); });
$('#rates' + counter).live('keyup', function(){ calculate(counter); });

function calculate(counter)
{
    total = Number($('#qty' + counter).val())*Number($('#rates' + counter).val())'
    $('#total' + counter).val(total);
}
于 2013-05-24T12:30:08.380 回答
0

当事件触发时,您永远不知道计数器的值。

$('#qty' + counter).on("blur", function() {
    calculate($(this));
});
$('#rates' + counter).on("blur", function() {
    calculate($(this)); 
});

function calculate(el) {
var counter = el.attr("id").indexOf("qty") != -1 ? el.attr("id").substring(3) : el.attr("id").substring(5);
var qty = isNaN(parseInt($('#qty' + counter).val())) ? 0 : parseInt($('#qty' + counter).val());
var rate = isNaN(parseInt($('#rates' + counter).val())) ? 0 : parseInt($('#rates' + counter).val());
$("#total" + counter).val(qty * rate);

}

于 2013-05-24T12:49:21.397 回答