在更改时保留jquery中的原始文本

时间:2018-04-09 16:26:23

标签: jquery

我希望尝试编写一些检查值是否已更改的代码。如果有,我希望它在集中注意力时将其恢复为旧值。这就是我所拥有的,但我发现这似乎不起作用:

$(document).ready(function(){

   var Foo = '101';

   $("#cfs_i9_cf9").focusin(function(){
      Foo = (this).value;
   });

   $("#cfs_i9_cf9").on('change', function(){
      $("#cfs_i9_cf9").attr('value', Math.round(Foo*100)/100);
   });

});

非常感谢!

2 个答案:

答案 0 :(得分:0)

恢复focusout上的值,而不是change

这样,当用户实际退出字段时,不会在键入期间恢复该值。

此外,使用jQuery' val来(重新)设置字段值;

$("#cfs_i9_cf9").on('focusout', function(){
    $("#cfs_i9_cf9").val(Math.round(Foo*100)/100);
});

请参阅Fiddle

最后确保#cfs_i9_cf9实际上是<input>元素。

答案 1 :(得分:0)

您可以使用jQuery的data方法存储旧值并在焦点上恢复它。这样,您就可以完全消除任何额外变量的需要。

$("#cfs_i9_cf9")
  .focusin(function(){
    $(this).data('old_value', this.value);
  })
  .focusout(function() {
    var oldValue = $(this).data('old_value');

    if (!!oldValue) {
      this.value = oldValue;
    }
  });

请注意,我在焦点输出时刚刚将旧值分配给了该字段。您可以根据需要修改逻辑。