输入输入值时更改未触发

时间:2016-05-20 19:17:42

标签: javascript onchange

我无法弄清楚为什么我的输入没有显示我的计算结果。根据输入的变化。我已经检查过在console.log中是否有输出,并且有,我使用IDE环境来开发一个已经注意到的错误,在编码时不会涉及代码它是IDE I'我想知道是不是这样吗?或者我的代码是不是正确的东西。

任何帮助将不胜感激

HTML

<td>InPut</td>
<td>
  <input class="" id="bhp_1" type="number" value="440">
</td>

<td>OutPut</td>
<td>
  <input class="" id="bpm_l60" type="number" value="567.11">
</td>

JavaScript

var  manualEntry = function(){
  var bhp = parseFloat($('#bhp_1').val());
  var bhp2 = parseFloat($('#bhp_2').val());
  var bhp3 = parseFloat($('#bhp_3').val());
  var bhp4 = parseFloat($('#bhp_4').val());
  var bhp5 = parseFloat($('#bhp_5').val());
  var bhp6 = parseFloat($('#bhp_6').val());
  var bhp7 = parseFloat($('#bhp_7').val());
  var bhp8 = parseFloat($('#bhp_8').val());
  var bhp9 = parseFloat($('#bhp_9').val());
  var bhp10 = parseFloat($('#bhp_10').val());
  var bhp11 = parseFloat($('#bhp_last').val()); 
  return {
     val: bhp,
     val2: bhp2,
     val3: bhp3,
     val4: bhp4,
     val5: bhp5,
     val6: bhp6,
     val7: bhp7,
     val8: bhp8,
     val9: bhp9,
     val10: bhp10,
     val11: bhp11
  }
}
manualEntry();

// console.log(manualEntry());

//Filter for return object 
var bhpKeys = Object.keys(manualEntry())
var bhpmatchingKeys = bhpKeys.filter(function(key) {
  return key.indexOf('val', 'val2', 'val3', 'val4', 'val5', 'val6','val7','val8','val9','val10','val11') !== -1
});
var bhpmatchingValues = bhpmatchingKeys.map(function(key) {
  return manualEntry()[key]
});


var bpm_l60 = function() {
  var mySpline = new MonotonicCubicSpline(
    [4000, 8000, 15000, 20000, 25000, 30000, 35000, 40000, 60000, 80000, 100000], bhpmatchingValues);
  var total = mySpline.interpolate(43592.990983668795);
  $('#bpm_l60').val(+total.toFixed(2));
  $('#bpm').val(+total.toFixed(2));
  return total;
};
bpm_l60();

Onchange listener

document.getElementById("bhp_1").onchange = (function() {
    manualEntry();
    bpm_l60();
});

以下是我遇到的问题的代码笔示例。 http://codepen.io/coryk/pen/zqgPyz?editors=1011

3 个答案:

答案 0 :(得分:0)

将你的js代码放在

window.onload = function() { } 

答案 1 :(得分:0)

你在哪里打电话给<input>听众?如果它是在创建$(document).on("change", "#bhp_1", function () { manualEntry(); bpm_l60(); }); 元素之前,它将无法工作。你已经在使用jQuery了,试试

{{1}}

答案 2 :(得分:0)

尝试将onchange事件更改为以下内容:

document.getElementById("bhp_1").onchange = function() {
    manualEntry();
    bpm_l60();
}

您目前正在做的是将函数包装在另一个方法调用()中,这不是用于将onchange事件绑定到元素的正确语法。