我有动态生成文本框的代码。我想将数量和速率文本框的值相乘,并在总文本框中显示结果并将其发布到下一页。
小提琴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的新手。任何帮助表示赞赏。谢谢。
答案 0 :(得分:0)
我认为问题出在这里
$('#rates + counter + ')
应该
$('#rates' + counter)
编辑:
我用jsfiddle分析了它,但问题在于你的逻辑。当你按一个键时,如何获得计数器。将使用计数器,一旦添加控件,它将不确定。
编辑2:
最后我想出了答案。 我不得不调整一下,但我希望它会让你满意
很抱歉编辑自己的链接
我刚刚添加了一个title属性,我用它来代替计数器变量。
e.target.title For the counter
title = '+ counter + ' in your HTml
请参阅链接。希望这可以帮助你
答案 1 :(得分: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);
}
答案 2 :(得分: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);
}