Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在动态多表单中进行自动计算?_Javascript_Php_Jquery_Dynamic_Dynamic Programming - Fatal编程技术网

Javascript 如何在动态多表单中进行自动计算?

Javascript 如何在动态多表单中进行自动计算?,javascript,php,jquery,dynamic,dynamic-programming,Javascript,Php,Jquery,Dynamic,Dynamic Programming,p/s:这是正常形式下的唯一功能。但不是动态形式 [编辑?] function sum() { $(document).on('keyup', "*[data-field='unit'],*[data-field='unit_price']", function(e) { var unit = document.getElementById('unit').value; var unitPrice = document.getElementById('u

p/s:这是正常形式下的唯一功能。但不是动态形式

[编辑?]

function sum()
  {
  $(document).on('keyup', "*[data-field='unit'],*[data-field='unit_price']", function(e)
    {
    var unit      = document.getElementById('unit').value;
    var unitPrice = document.getElementById('unit_price').value;
    var result    = parseInt(unit) * parseInt(unitPrice);
    if (!isNaN(result)) 
      {
      document.getElementById('amount').value = result;
      }
    });
  }

你可以用jQuery插件来做这个,我写了一个简单的插件

您可以通过以下方式进行测试:

$.fn.sum=函数(选项){
“严格使用”;
var self=这个;
self.defaults={
单位:“[data field=“unit”]”,
单价:'[数据字段=“单价”],
结果:“[data field=“amount”]”,
onCalculate:函数(结果){},
};
self.settings=$.extend({},self.defaults,options);
var unit_count=$(self.find('input'+self.settings.unit).length;
var单价\计数=$(self).find('input'+self.settings.unit\ price).length;
如果(单位计数>0&&单位价格计数>0){
var单位,单价=0,结果=0;
$($(self.find('input'+self.settings.unit_price)).bind('keyup',function(){
unit=$(this.nexist('form').find('input'+self.settings.unit).val();
单价=$(this).closest('form').find('input'+self.settings.unit_price).val();
结果=总和(单位、单价);
self.settings.onCalculate(self,$(this),结果);
});
$($(self.find('input'+self.settings.unit)).bind('keyup',function(){
unit=$(this.nexist('form').find('input'+self.settings.unit).val();
单价=$(this).closest('form').find('input'+self.settings.unit_price).val();
结果=总和(单位、单价);
self.settings.onCalculate(self,$(this),结果);
});
函数和(单位、单价){
var结果=parseInt(单位)*parseInt(单价);
如果(!isNaN(结果)){
返回结果;
}
}
}
}
$(文档).ready(函数(){
$('form').sum({
onCalculate:函数(自身、活动、结果){
$(活动).最近('form').find(self.settings.result).val(结果);
},
});
});

二
单元

单价


一 单元
单价


$('unit,'price').on('input',function(){var qty=parseInt($('unit').val());var price=parseFloat($('price').val());$('amount').val('qty*price?qty*price:0.toFixed(2));我要换衣服了。我有动态形式。我只是不知道如何使js自动计算为动态。您也可以更改如下选项参数:$(document).ready(function(){$('form').sum({unit:'[data field=“XXXXX”]',单价:'[data field=“YYYYY”]',结果:'[data field=“BBBBB”]',onCalculate:function(self,active,result){$(active).closest('form').find(self.settings.result).val(result);},},});
$('#unit, #price').on('input',function()
  {
  let qty   = parseInt($('#unit').val())
    , price = parseFloat($('#price').val())
    ;
  $('#amount').val((qty * price ? qty * price : 0).toFixed(2));
  });