因此,我尝试做一些我不一定认为是UI界面(不是我选择)的最佳实践,并在用户输入后更改输入值。
输入字段如下所示:
<td><input type="text" pattern="[0-9]*" name="number1" id="number1" class="currency"> / LUNA study</td>
和改变它的JS看起来像这样:
var number1 = strToNumber($("#number1").val());
var number1_calc = number1 +(calc_value * 0.1);
$("#number1").focusout(function(){
$("#number1").val(formatCurrency(Math.round(number1_calc)));
});
这部分代码按照我想要的方式工作,我最终遇到问题的地方是当我需要将计算值用于不同的等式时:
var number_total = number2 * number1_calc;
现在我的计算设置可以在任何输入中进行任何更改。所以最终发生的事情是在焦点输出改变输入值之后,下次计算运行时需要新输入值而不是旧输入值。
这是我尝试做的JSFiddle。正如您所看到的,只要您在number2中输入内容,对number_1所做的更改就会更新number_total,这就是我要停止的内容。
答案 0 :(得分:1)
我不确定我是否理解你的问题/场景,但是如果你想保留最初输入的值,那么你可以使用jQuery的.data()将原始值与输入元素相关联:
$('#number1').on('blur', function() {
$(this).data('original-value', this.value);
});
然后,在对任何输入进行更改的计算函数中,引用$('#number1').data('original-value')
而不是.val()
。