使用 JQuery 将动态创建的输入字段中的值相乘
Use JQuery to multiply values from dynamically created input fields
我正在使用JQuery动态创建表行。每行包含 3 个文本字段。当用户在文本字段中键入内容时,将克隆表行,并根据需要添加多行。 一切正常。
数值输入到前 2 个字段中,这些字段相乘。输出将自动显示在第三个文本框中。由于输入字段是克隆的,我不能使用 getElementById 来运行函数并乘以值。
我被告知使用onchange
使用父母兄弟姐妹,但我不知道该怎么做。有人可以给我举个例子吗?
这是我在 JS Fiddle 中的代码示例: https://jsfiddle.net/mzctb778/
由于您正在动态添加内容,因此应使用事件委派来侦听更改事件。通过将其附加到表来执行此操作。因此,请监听输入的变化。检测到更改后,通过查找 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>
将其添加到您的脚本中,它将执行您想要的计算:
$("table select").on("change", function(){
var x=$(this).find(":selected").val();
var y=$(this).closest("td").siblings().find(":selected").val();
$(this).closest("td").siblings().find("input").val(x*y);
});
新 JS 小提琴
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 而循环只设置php中输入字段中的第一个值
- 使用 Javascript 将字段输入除以 12
- 合并来自多个字段输入的搜索结果
- 使用 Javascript 实时打印字段输入数据
- 防止AngularJS中跨路由的字段输入重复
- 引用Iframe中的字段输入
- 禁用html5”;“必需”;不显示窗体部分时的字段输入属性
- JavaScriptFormValidation-需要特定的字段输入,但使用大写/小写
- 验证VF页面上所需字段输入的Javascript不起作用
- 在没有
- 使用Jquery将字段输入值作为查询字符串附加到url
- HTML5 jQuery选择所有日期字段'输入:date'
- 将字段输入复制到另一个字段输入
- 向图像添加字段(输入)
- 动态添加字段输入不会存储值并传递给控制器
- 向输入字段输入键击
- 我如何通过javascript验证datetime字段输入
- HTML如何将用户字段输入作为json对象发送
- 如何根据'select' onchange事件将值填充到第二个输入字段?输入