如何获取输入事件的前一个值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (53)

我有一个必须动态更改的值:原始值为6,我可以自定义它。如果我把7装在一个输入箱里,我现在就有13台了。当我添加另一个数字时,例如71,我的值会改变13+71。我想用前面的值(7)减去13,以得到原来的值6。

这是我的片段:

$('.test :input').on('input', function(){

var ok = $('.ok');
ok.text(parseFloat(ok.text()) + parseFloat($(this).val()))
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="ok" style="background-color: white">
6
</div>
<div class="test">
<input type="text"/>
</div>

如果你尝试键入45,你应该有51,你有55。

我已经尝试了“聚焦”,如一些线程所示,但我不会离开输入,因此它不工作。我不知道怎么得到我以前的值。

提问于
用户回答回答于

你可以使用一个属性来存储初始值:

$('input').on('input', function() {
  var ok = $('.ok');
  ok.text(+(ok.attr('i')) + +($(this).val() || 0))
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="ok" i="6">6</div>
<input type="text" />

用户回答回答于

还不完全清楚你想要什么。但我能看出你的选择是错的。此外,你还需要确保在查询文档中的元素之前加载了文档。

我将事件侦听器更改为onChange,这样每个按键都不会添加。

$(document).ready(function() {
  $('.test input').on('change', function() {
    var ok = $('.ok');
    ok.text(parseFloat(ok.text()) + parseFloat($(this).val()))
  })
});

我猜测你要到是plunker。它将初始值存储为属性。

$(document).ready(function() {
  var ok = $('.ok');

  $('.ok').text(ok.attr('data-initial-value'));
  $('.test input').on('change', function() {
    ok.text(parseFloat(ok.attr('data-initial-value')) + parseFloat($(this).val()))
  })
});

<div class="ok" data-initial-value="6" style="background-color: white">
  </div>

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励