我使用JQuery动态创建表行。每行包含3个文本字段。当用户键入文本字段时,将克隆表行并根据需要添加多行。一切正常。
将数值输入前2个字段,这两个字段相乘。输出自动显示在第3个文本框中。由于输入字段是克隆,我不能使用getElementById来运行函数&乘以数值。
我被告知使用父母兄弟姐妹使用onchange
,但我不知道该怎么做。有人可以举个例子吗?
以下是我在JS Fiddle中的代码示例:https://jsfiddle.net/mzctb778/
答案 0 :(得分:1)
由于您要动态添加内容,因此应使用事件委派来侦听更改事件。通过将其附加到表格来完成此操作。所以听一下输入的变化。检测到更改后,通过查找DOM并选择需要乘以的输入来获取行。由于你不能使用id,因为它们必须是唯一的,所以使用类来引用元素。
$("table").on("change", "input", function () { //use event delegation
var tableRow = $(this).closest("tr"); //from input find row
var one = Number(tableRow.find(".one").val()); //get first textbox
var two = Number(tableRow.find(".two").val()); //get second textbox
var total = one * two; //calculate total
tableRow.find(".three").val(total); //set value
});
$("button.add").on("click", function() {
var tbody = $("table tbody");
tbody.find("tr:eq(0)").clone().appendTo(tbody).find("input").val("");
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td><input class="one" /></td>
<td><input class="two" /></td>
<td><input class="three" readonly="readonly"/></td>
</tr>
</tbody>
</table>
<button class="add">Add</button>
&#13;
答案 1 :(得分:-3)
将此添加到您的脚本中,它将执行您想要的计算:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link href ="style.css" rel="stylesheet" type="text/css"/>
<title>Untitled Document</title>
</head>
<body>
<div id="header-wrap">
<div id="header">
<div class="logo"><p>LOGO</p></div>
<div class="links"><p>VENDING MACHINES | DISTRIBUTORS | SUPPORT | CONTACT<p></div>
</div>
</div>
</body>
</html>