Вычисление в поле vTiger перед обработчиком сохранения на стороне Javascript (код внутри) - PullRequest
0 голосов
/ 17 июня 2019

Мне нужно понять, как выполнять вычисления в реальном времени на 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);
}
});
}

Я сделал что-то не так?Потому что это не работает ..

Спасибо за помощь!

Ответы [ 3 ]

0 голосов
/ 26 июня 2019

Я должен написать вашу функцию 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);
    }
  })
},
0 голосов
/ 27 июня 2019

Вы должны передать идентификаторы элемента вместо ссылки на элемент для Keyup функции. Пожалуйста, найдите фрагмент кода ниже и измените свой код в vTiger. Как я проверил весь синтаксис и функции написаны правильно в вашем скрипте. Просто передайте разделенные запятой идентификаторы и выполните код. Спасибо!

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"/>
0 голосов
/ 17 июня 2019

Вы должны вызвать вашу функцию в функцию registerBasicEvents. Если функция registerBasicEvents недоступна в модуле Edit.js модуля «Контакты», добавьте ее.

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