如何在keyup事件中获取已删除的字符

问题描述

我想在退格事件中获取最后一个删除的字符,以便我可以逐步修改其他一些 div。我正在寻找的功能是这样的:

$('.tags').keyup(function (e) {
   if (e.keyCode == 8) {
    var t = e.target;
    let deletcChar = //find the deleted character
        console.log("deleted char is:",deletedChar);
        //do something about deletcChar             
    }
});

在这里找到的解决方案(如 this)都非常复杂并且基于 keydown。

一个更简单的解决方here 使用 (e.target.value[even.target.selectionStart - 1]),它不适用于 keyup。

所以我想知道 jquery 中的 keyup() 是否有一种直接的方法

解决方法

您可以在页面加载时设置一个数据属性来存储上次状态,然后在每次更新时从中查找已删除的字符

$(document).ready(function() {
  $('.tags').each(function() {
    $(this).attr('data-laststate',$(this).val())
  })
  $('.tags').keyup(function(e) {
    if (e.keyCode == 8) {
      let deletedChar = $(this).attr('data-laststate').slice(-1);
      console.log("deleted char is:",deletedChar);
    }
    $(this).attr('data-laststate',$(this).val())
  });
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class='tags' value='php,html,asp' />

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...