如何在动态表中将元素放在同一行中?

时间:2015-11-18 13:27:37

标签: javascript jquery html dom

我正在创建一个页面,其中包含一个带有按钮的表来添加行。它是用户输入数据的表,最终将提交给数据库。

目前,每行都有价格和数量字段。当其中任何一个发生变化时,我想计算总数并将其写入另一个单元格。

这是我的事件处理程序(包含在$(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;'>

除了我原来的问题,这个事件永远不会被解雇。谁能明白为什么?

但更重要的是,这是检索价值观的最佳方法吗?我真的不这么认为,但我无法想出更聪明的东西。

谢谢!

1 个答案:

答案 0 :(得分:0)

你必须将paremeter传递给calc_total以定义输入或tr

试试这段代码

&#13;
&#13;
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;
&#13;
&#13;