首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取输入事件的上一个值

获取输入事件的上一个值
EN

Stack Overflow用户
提问于 2018-06-10 05:14:25
回答 3查看 6K关注 0票数 2

我有一个必须动态更改的值:原始值是6,我可以对其进行自定义。如果我把7放在输入框上,我现在就有13。当我添加另一个数字时,比如71,我的值就变成了13 + 71。我想用前面的值(7)减去13,得到原来的值6。

下面是我的代码片段:

代码语言:javascript
复制
$('.test :input').on('input', function(){

var ok = $('.ok');
ok.text(parseFloat(ok.text()) + parseFloat($(this).val()))
})
代码语言:javascript
复制
<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。

我已经尝试了“聚焦”,如一些线程所示,但我不会离开输入,所以它不起作用。我不知道如何获得我之前的值。

EN

回答 3

Stack Overflow用户

发布于 2018-06-10 05:38:06

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

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

代码语言:javascript
复制
$(document).ready(function() {
  $('.test input').on('change', function() {
    var ok = $('.ok');
    ok.text(parseFloat(ok.text()) + parseFloat($(this).val()))
  })
});

这是它运行的plunker

这是你要问的另一个猜测,plunker。它将初始值存储为属性。

代码语言:javascript
复制
$(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>
票数 1
EN

Stack Overflow用户

发布于 2018-06-10 05:46:14

正如@Doug建议的那样,您可以使用属性来存储初始值:

代码语言:javascript
复制
$('input').on('input', function() {
  var ok = $('.ok');
  ok.text(+(ok.attr('i')) + +($(this).val() || 0))
})
代码语言:javascript
复制
<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" />

票数 0
EN

Stack Overflow用户

发布于 2018-06-10 06:49:39

感谢所有人的帮助和提示,并为混乱的解释道歉…

这就是我所做的,它起作用了:当我聚焦时,我将旧值放在一个属性中,然后当我将数字相加时,我用存储的数字减去我的实际数字。

代码语言:javascript
复制
$('.test input').on('focus', function(){

$(this).attr('value', $(this).val());

});


$('.test input').on('change', function(){
    var valActuelle = 0;
    if($(this).attr('value') !== ''){
        valActuelle = $(this).attr('value');
    }

var ok = $('.ok');
ok.text(( parseFloat(ok.text())  - parseFloat(valActuelle)) + parseFloat($(this).val()) );
})
代码语言:javascript
复制
<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>

它只有在你失去焦点的情况下才有效,但在我的情况下,我总是失去焦点

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50778599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档