javascript - 如何将这两个确切的事件与不同的元素合并?

标签 javascript jquery

我有两个元素,它们在执行时执行相同的功能。如何合并这些脚本使其更干净?

//e_jumlah script
$("#t_jps_item").on('keyup','.e_jumlah',function(){             
    var par_jml = $(this).val().replace(/,/g , '');
    var par_hrg = $(this).closest('tr').find('.e_harga').val().replace(/,/g , '');

    var total   = parseInt(par_jml) * parseFloat(par_hrg);

    $(this).closest('tr').find('.e_total').val(total.toLocaleString());
});

//e_harga script
$("#t_jps_item").on('keyup','.e_harga',function(){              

    var par_hrg = $(this).val().replace(/,/g , '');
    var par_jml = $(this).closest('tr').find('.e_jumlah').val().replace(/,/g , '');

    var total   = parseInt(par_jml) * parseFloat(par_hrg);

    $(this).closest('tr').find('.e_total').val(total.toLocaleString());
});

最佳答案

您可以向两个 DOM 添加一个公共(public)类,然后调用该类的函数。在该类中,您可以使用唯一类(或最好使用 id)来获取值。

$(".container").on('keyup','.input-item',function(){  
    var par_jml = $('.e_jumlah').val().replace(/,/g , '');
    var par_hrg = $('.e_harga').val().replace(/,/g , '');
    var total   = parseInt(par_jml) * parseFloat(par_hrg);

   var total   = parseInt(par_jml) * parseFloat(par_hrg);

    $('.total').val(total.toLocaleString());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <input class="input-item e_jumlah" id="s1" placeholder="input1" value="0">
  <input class="input-item e_harga" id="s1" placeholder="input1" value="0">
  <input class="total">
</div>

关于javascript - 如何将这两个确切的事件与不同的元素合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52417990/

相关文章:

javascript - 检查 XML HTTP 请求中的重复值

Javascript - 检查是否配置了电子邮件

javascript - 使用 jQuery 显示/隐藏表列

javascript - JSON.stringify 子数组在 Controller 上为空

javascript - 如何通过用户输入更改按钮值

javascript - noty Jquery 插件超时没有发生

javascript - 使用 React 获取数组中的下一个/上一个项目

javascript - 不确定要关闭哪些 ESLint 规则

javascript - 如何在 JavaScript 中引用 Arguments 类?

javascript - 将一个字符串插入另一个字符串