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

时间:2014-02-04 17:59:35

标签: javascript jquery

因此,我尝试做一些我不一定认为是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,这就是我要停止的内容。

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解你的问题/场景,但是如果你想保留最初输入的值,那么你可以使用jQuery的.data()将原始值与输入元素相关联:

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

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