Javascript 文本值在值更改后保持不变

Javascript 文本值在值更改后保持不变,javascript,jquery,Javascript,Jquery,我有四个文本字段,用户在其中插入值。对于顶部的两个输入字段,它将计算两个字段的相加。其思想是获取每个字段的百分比值。因此,一旦有了一个值,我们除以总数,然后乘以100,得到每个文本字段的百分比值 这一切都很好 但是,如果用户手动输入并添加一个白天百分比,它应该通过获取该值并减去100来自动计算夜间百分比(或者反过来) 每次更改该值时,它都会恢复为旧版本 var日值、夜值、日百分比、夜百分比; $('day'u kwh')。on('input',function(){ day_值=此值; });

我有四个文本字段,用户在其中插入值。对于顶部的两个输入字段,它将计算两个字段的相加。其思想是获取每个字段的百分比值。因此,一旦有了一个值,我们除以总数,然后乘以100,得到每个文本字段的百分比值

这一切都很好

但是,如果用户手动输入并添加一个白天百分比,它应该通过获取该值并减去100来自动计算夜间百分比(或者反过来)

每次更改该值时,它都会恢复为旧版本

var日值、夜值、日百分比、夜百分比;
$('day'u kwh')。on('input',function(){
day_值=此值;
});
$('night_kwh')。打开('input',function(){
夜_值=此值;
});
$('.storage')。在('change',function()上{
//控制台日志(日值+夜值);
if(白天的类型值!=“未定义”&&typeof夜间的类型值!=“未定义”){
总计=parseInt(日间值)+parseInt(夜间值);
console.log('total value:'+total);
日价值=(日价值/总额)*100;
console.log('日值:'+日值);
夜间值=(白天值/总计)*100;
console.log('夜间值:'+夜间值);
$('日百分比').val(日值);
$('night#u percent').val(night#u值);
}
});

日千瓦时:

夜间千瓦时:
天%:
夜间%:

您需要添加额外的代码,以检查更改的控件是否为day\u%

$('.storage').on('change', function(e) {
//console.log(day_value + night_value);
  if(e.target && $(e.target).attr('id') == 'day_percent'){
    /* Write the logic for your calculation you want */
  }
  else
   if (typeof day_value != 'undefined' && typeof night_value != 'undefined')  {
  total = parseInt(day_value) + parseInt(night_value);
  console.log('total value: ' + total);
  day_percentage = (day_value / total) * 100;
  console.log('day value: ' + day_value);
  night_percentage = (night_value / total) * 100;
  console.log('night value: ' + night_value);

  $('#day_percent').val(day_percentage);
  $('#night_percent').val(night_percentage);

  }
});

我想你只是忘了改变一些变量,似乎起作用了。“我错过了什么吗?”安德烈·布鲁克,看起来是这样。
day\u值
night\u值
设置在两个不同的位置,这意味着两件不同的事情。1。您正在调用一个常规函数来更新百分比。因此,当您更改百分比字段时,将运行相同的函数。2.您一直使用day_value和night_value字段来计算应使用day_percent和night_percent变量的百分比。光靠这一点并不能解决你的问题,但这是一个好的开始。如果您需要更多帮助,请告诉我们,我们可以为您查看和修改JSFIDLE。