我正在创建一个页面,其中包含一个带有按钮的表来添加行。它是用户输入数据的表,最终将提交给数据库。
目前,每行都有价格和数量字段。当其中任何一个发生变化时,我想计算总数并将其写入另一个单元格。
这是我的事件处理程序(包含在$(document).ready()
中):
$(".quantity_input, .price_input").change(function () {
console.log(this.value);
cal_total();
});
这是我目前的代码:
function cal_total() {
if (isNaN(parseFloat(this.value))) {
alert("You must enter a numeric value.");
this.value = "";
return;
}
var cell = this.parentNode;
var row = cell.parentNode;
var total = parseFloat($("#items_table tr").eq(row.index).find("td").eq(3).find("input").first().val()) * parseFloat($("#items_table tr").eq(row.index).find("td").eq(4).find("input").first().val());
if (!isNaN(total)) {
$("#items_table tr").eq(row.index).find("td").eq(5).html(total.toFixed(2));
}
}
这就是输入的样子:
<input type='text' class='fancy_form quantity_input' name='quantities[]' size='4' style='text-align:center;border-bottom:none;'>
除了我原来的问题,这个事件永远不会被解雇。谁能明白为什么?
但更重要的是,这是检索价值观的最佳方法吗?我真的不这么认为,但我无法想出更聪明的东西。
谢谢!
答案 0 :(得分:0)
你必须将paremeter传递给calc_total以定义输入或tr
试试这段代码
Dictionary<string,object>
&#13;
$(".quantity_input, .price_input").change(function () {
$(".quantity_input, .price_input").change(function () {
cal_total(this);
});
});
function cal_total(elem){
var row=$(elem).closest("tr")
var quantity=row.find(".quantity_input").val()-0
var price=row.find(".price_input").val()-0
var total=quantity * price
row.find(".totl_input").val(total)
}
&#13;