Javascript 在保留原始值的同时更改输入值

Javascript 在保留原始值的同时更改输入值,javascript,jquery,Javascript,Jquery,因此,我正在尝试做一些从UI的角度看(不是我自己选择的)不一定认为是最佳实践的事情,并在用户输入后更改输入的值 输入字段如下所示: <td><input type="text" pattern="[0-9]*" name="number1" id="number1" class="currency"> / LUNA study</td> 代码的这一部分是按我所希望的方式工作的,我遇到问题的地方是当我需要为不同的方程使用计算值时: var number_tot

因此,我正在尝试做一些从UI的角度看(不是我自己选择的)不一定认为是最佳实践的事情,并在用户输入后更改输入的值

输入字段如下所示:

<td><input type="text" pattern="[0-9]*" name="number1" id="number1" class="currency"> / LUNA study</td>
代码的这一部分是按我所希望的方式工作的,我遇到问题的地方是当我需要为不同的方程使用计算值时:

var number_total = number2 * number1_calc;
现在我有了计算设置,可以根据输入中的任何更改运行。因此,在focusout更改输入值之后,下一次运行计算时,它将采用新的输入值,而不是旧的输入值


下面是我想做的一个例子。正如您所看到的,只要您在number2中输入一些内容,数字\u总数就会根据对数字\u 1所做的更改进行更新,这就是我想要停止的内容。

我不确定我是否非常理解您的问题/场景,但是如果您想保留最初输入的值,那么可以使用jQuery的.data()要将原始值与输入元素关联,请执行以下操作:

$('#number1').on('blur', function() {
  $(this).data('original-value', this.value);
});

然后,在对任何输入进行更改后运行的计算函数中,引用
$(“#number1”).data('original-value')
而不是
.val()

简化js小提琴怎么样?在我看来,您应该使用jQuerys
change()
function我们当然可以在这里使用更多的代码。正如@Sionnach733所提到的,您可能想使用
$('#number1')。在('change',function(){})
而不是
focusout()
上,我刚刚添加了一个JSFIDIC我的问题,这是您想要的吗?谢谢您的建议,但我不确定这是否会奏效。下面是我遇到的问题的一个例子。如果你看一下,你会发现当我在数字2中输入一些东西时,它会根据更改后的数字1更新总数,我不希望它这样做。所以,你的意思是,计算值应该影响数字1的显示,但不应该影响数字总数?也许,如果你当时通过表格输入一,输入calc_值和数字1后,您将看到total_值显示我想要的值。但是,当您转到数字2并输入一个值时,总值会发生变化。这是因为它正在再次运行change(函数)并根据更改的number1值重新计算number1\u calc。类似于我的想法,使用.data()保留未修改的number1值的隐藏缓存:
$('#number1').on('blur', function() {
  $(this).data('original-value', this.value);
});