更改以保留 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);
   });
});

非常感谢!

focusout上恢复值,而不是change

这样,在用户实际退出字段时(而不是在键入期间(恢复值。

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

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

见小提琴

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

你可以利用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;
    }
  });

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

最新更新