如何使用keyup或input进行操作? javascript(jQuery)

时间:2016-05-13 15:00:53

标签: javascript php jquery

我遇到了一个问题,我有两个文本字段,默认情况下在打开页面或reaload时都有一个值,这是我从MySQL和PHP得到的值,如下所示:

<input type="text" id="field1" value="<?php echo $first_value; ?>" />
<input type="text" id="utility" value="<?php echo $second_value; ?>" />

使用javascript我希望在更改#field1的值时执行此操作,执行减法并将结果显示为#utility

问题是操作的结果不正确,例如:

如果#field1第一次有500,#utility 1041.00现在,如果我将#field1的值更改为1000,则#utility的新值为-69.06,我我猜它每次删除或添加一个新号码都在进行操作但是我不知道如何解决这个问题,这是我的javascript(jquery)代码:

 $('#field1').on('input', function() {

   var difference = parseFloat($(this).val());
   var utility   = $('#utility').val().replace(/,/g, '');


   var total = utility - difference;

   if (!total) { total = 0; }

   $('#utility').val(parseFloat(Math.round(total * 100) / 100).toFixed(2));
});

2 个答案:

答案 0 :(得分:1)

您无需添加额外字段的其他选项就是使用.on('blur',function(){} )或仅使用.blur(function(){})

当输入离开字段强制刷新时,这将导致操作。

答案 1 :(得分:0)

我通过创建一个具有相同hidden值的新输入字段类型#utility解决了我的问题,并将其命名为#new_utilty

 $('#field1').on('input', function() {

   var difference = parseFloat($(this).val());
   var utility   = $('#new_utility').val().replace(/,/g, '');


   var total = utility - difference;

   if (!total) { 

      total = 0; 
      $('#utility').val(parseFloat(Math.round(utility * 100) / 100).toFixed(2));

   } else {

       $('#utility').val(parseFloat(Math.round(total * 100) / 100).toFixed(2));
   }
});

这是我没有Ajax Call的解决方案