在 Javascript 侧保存处理程序之前计算 vTiger 字段(内部代码)

Calculation on vTiger field before save handler on Javascript Side (code inside)

我需要了解如何在 Edit.js

上进行实时计算

通过搜索和环顾四周,我在联系人模块的 Edit.js 中找到了这段代码。

calculate_amount: function (){
var units = $("input[name='cf_852']");
var value = $("input[name='cf_854']");
$(units, value).on('keyup', function(){
if (units.val() != '' && value.val() != ''){
var currentamount = units.val() * value.val();
$("input[name='cf_856']").val(currentamount);
}
});
}

我是不是做错了什么?因为不行..

感谢大家的帮助!

您必须将函数调用到函数 registerBasicEvents 中。 如果联系人模块的 Edit.js 中没有 registerBasicEvents 函数,请添加它。

registerBasicEvents: function (container) {
  this._super(container);
  this.calculate_amount();
}

我应该这样写你的 keyup 函数:

我测试了,没问题

calculateAmount: function (){  
  var units = $("input[name='cf_1512']");
  var value = $("input[name='cf_1514']");
  $(document).on('keyup',"input[name='cf_1512'], input[name='cf_1514']", function(){
    if (units.val() != '' && value.val() != ''){
      var currentamount = units.val() * value.val();
      $("input[name='cf_1518']").val(currentamount);
    }
  })
},

您应该为 Keyup 函数传递元素的 ID 而不是元素的引用。请找到下面的代码片段并在 vTiger 中修改您的代码。因为我检查了脚本中正确编写的所有语法和函数。只需传递逗号分隔的 id 并执行代码。谢谢!

var units = $('#Contacts_editView_fieldName_cf_1512');
var value = $('#Contacts_editView_fieldName_cf_1514');
  
  $('#Contacts_editView_fieldName_cf_1512, #Contacts_editView_fieldName_cf_1514').on('keyup', function(){
 
        if (units.val() != '' && value.val() != ''){
           var currentamount = parseFloat(units.val()) * parseFloat(value.val());
           $("#Contacts_editView_fieldName_cf_1516").val(currentamount);
        }
 });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
Input1: <input type="text" id="Contacts_editView_fieldName_cf_1512"/><br/>
Input2: <input type="text" id="Contacts_editView_fieldName_cf_1514" /><br/>
Result: <input type="text" id="Contacts_editView_fieldName_cf_1516"/>