只有第一行适用于金额函数 [closed]

Only first row works for amount function [closed]

提问人:surviver lartey 提问时间:8/10/2023 最后编辑:Roko C. Buljansurviver lartey 更新时间:8/11/2023 访问量:36

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

4个月前关闭。

我的函数仅适用于第一行的输入。如何让它独立地为表格中的每一行工作?sun

inventory Table rows

<script>
$(function() {
  $("#num1, #num2, #num3",).on("keydown keyup", sum);
  function sum() {
    $("#sum").val(Number($("#num1").val()) * Number($("#num2").val()) );
    $("#sum1").val(Number($("#sum").val()) - (Number($("#sum").val()) * (Number($("#num3").val()) / 100 )));
  }
});
</script>
jquery 函数

评论

1赞 Ramisha Mukhtar 8/10/2023
请在您的帖子中添加一些详细信息,以及更多代码片段。你到底想实现什么,哪些方法不适合你。
0赞 Yogendra 8/10/2023
你有正确的思想吗?提供您要执行的操作的详细信息,并输入带有其 ID 的详细信息
1赞 Roko C. Buljan 8/10/2023
ID 必须是唯一的。请改用类。并从父包装器进行委托。
0赞 surviver lartey 8/10/2023
@Ramisha,当用户输入数量和金额时,金额字段会自动计算,但它仅适用于第一行。
0赞 surviver lartey 8/10/2023
@Bahubali,我有一个jQuery函数,当用户输入数量和单位成本时,它会自动对金额求和。这仅适用于第一行。

答:

0赞 Roko C. Buljan 8/10/2023 #1

使用类(而不是唯一 ID),并使用对父行的引用,例如 或:$row.find(".num1")$(".num1", $row)

jQuery($ => { // DOM ready and $ alias in scope

  function sum() {
    const $row = $(this).closest("tr");
    
    const $num1 = $row.find(".num1");
    const $num2 = $row.find(".num2");
    const $num3 = $row.find(".num3");
    
    const $sum = $row.find(".sum");
    const $sum1 = $row.find(".sum1");
    
    $sum.val(Number($num1.val()) * Number($num2.val()));
    $sum1.val(Number($sum.val()) - (Number($sum.val()) * Number($num3.val()) / 100));
  }

  $(".myTable").on("input", ".num1, .num2, .num3", sum);

});

并使用该事件代替"input""key*"

评论

0赞 surviver lartey 8/11/2023
非常感谢,它有效。我真的很感激。