在文本框上按删除或退格键时获取删除的字符或文本

2024-01-26

我有一个文本框,我想在按退格键或删除键时获取删除的字符。

我有一个按键事件处理程序,如果按键是退格键,我将捕获。现在,在其中我需要根据已删除的密钥执行一些任务。请帮忙。


做了一些调整后getCursorPosition函数于这个线程 https://stackoverflow.com/questions/1891444/how-can-i-get-cursor-position-in-a-textarea,您可以通过跟踪当前光标选择来删除字符。

该代码处理以下条件:

  1. 键入,然后在末尾退格。
  2. 将光标移动到文本中间并删除/退格。
  3. 选择一段文本,然后删除/退格。
$.fn.getCursorPosition = function() {
    var el = $(this).get(0);
    var pos = 0;
    var posEnd = 0;
    if('selectionStart' in el) {
        pos = el.selectionStart;
        posEnd = el.selectionEnd;
    } else if('selection' in document) {
        el.focus();
        var Sel = document.selection.createRange();
        var SelLength = document.selection.createRange().text.length;
        Sel.moveStart('character', -el.value.length);
        pos = Sel.text.length - SelLength;
        posEnd = Sel.text.length;
    }
    // return both selection start and end;
    return [pos, posEnd];
};

$('#text').keydown(function (e) {
    var position = $(this).getCursorPosition();
    var deleted = '';
    var val = $(this).val();
    if (e.which == 8) {
        if (position[0] == position[1]) {
            if (position[0] == 0)
                deleted = '';
            else
                deleted = val.substr(position[0] - 1, 1);
        }
        else {
            deleted = val.substring(position[0], position[1]);
        }
    }
    else if (e.which == 46) {
        var val = $(this).val();
        if (position[0] == position[1]) {

            if (position[0] === val.length)
                deleted = '';
            else
                deleted = val.substr(position[0], 1);
        }
        else {
            deleted = val.substring(position[0], position[1]);
        }
    }
    // Now you can test the deleted character(s) here
});

这是现场演示 http://jsfiddle.net/ArieShout/c5daT/2/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在文本框上按删除或退格键时获取删除的字符或文本 的相关文章

随机推荐

  • iPhone 在 CoreData 保存时崩溃

    这是一个不同的情况这个问题 https stackoverflow com questions 1230858 iphone core data crashing on save 因为提供的解决方案不起作用并且堆栈不同 当我使用 cored
  • 从 HttpResponseMessage 获取 Excel 文件

    我正在开发一个 ASP NET Core 2 2 项目 我需要使用浏览器下载 Excel 但是当我执行请求时 我只得到一些 Json 我的 Excel 在流中 并且流不为空 这是我的代码 HttpResponseMessage messag
  • 为什么 requestWhenInUseAuthorization 不提示用户访问该位置?

    In my viewDidLoad我有的方法 locationManager CLLocationManager alloc init initializing locationManager locationManager delegat
  • 是否有 DCC32 选项将特定编译器警告视为错误?

    对于命令行构建 我想将警告 例如 构造包含抽象方法的实例 视为错误 我在 Delphi 2009 中没有找到用于此目的的 dcc32 命令行选项 有没有办法 例如使用 dcc32 cfg 来执行此操作 像这样 dcc32 W CONSTRU
  • 获取 QPixmap 的哈希值的最佳方法是什么?

    我正在使用 Qt 4 5 开发一个图形应用程序 并将图像放入 QPixmapCache 中 我想对此进行优化 以便如果用户插入已经在缓存中的图像 它将使用该图像 现在 每个图像都有一个唯一的 ID 有助于在绘制事件时优化自身 但是我意识到
  • PHP 中 error_log() 中的换行符

    如何在使用时插入换行符error log in PHP 我尝试使用 br and n 但那些没有用 添加错误消息时使用双引号 error log This is a two lined message nThis is line two 应
  • 如何使用pickle保存聊天机器人模型

    我创建了一个Chatbot using 聊天机器人 and tkinter图书馆 但每当我打开文件时它就会启动训练模型并且需要花费很多时间 因此我搜索并找到了解决方案泡菜模块 但现在我也尝试了 pickle 它不起作用并显示错误 有什么办法
  • 使用不同类型容器的迭代器范围初始化容器

    假设我们有std set
  • 命令行:“-”转换为“û”

    我在 bat 或 cmd 文件中运行此命令来启动 ftp 脚本 ftp v i s test script txt 命令窗口将其转换为 ftp v i s test script txt 因此它不起作用 注意 如果我从 cmd 窗口手动运行
  • 如何统计特定组中共同值的数量?

    我有一个数据框df df lt data frame shop c A A A B B B C C C product c 1 2 3 4 5 1 5 2 4 对于每对商店 即AB AC and BC 我想统计一下常见产品的数量 预期输出如
  • Ubuntu wsl2 git 在大型存储库上出现“远程端意外挂起”

    在 Windows 上的 wsl2 中的 Ubuntu 19 04 中获得此操作数天 git clone https github com gohugoio hugo git Cloning into hugo error RPC fail
  • 使用 apache commons fileutils 排除特定子目录

    我想使用 apache commons lib 列出当前目录下的所有文件 但排除子目录及其子目录中的所有文件 例如 如果我当前目录是 A 及其子目录为 B C DB 的子目录为 b1 b2 b1 的子目录为 b12 C 的子目录为 c1 c
  • 从 CMake 项目创建 Debian 软件包

    我正在考虑从现有库 paho mqtt c 创建 Debian 软件包 该项目使用 CMake 作为其构建系统 经过一些研究 我认为我需要创建两个或三个不同的包 libpaho mqtt3 带有库 so 文件和相关内容 libpaho mq
  • 如何找出哪些 JavaScript 引擎/平台支持 ES6 Unicode 正则表达式的哪些功能?

    我经常使用多种人类语言和书写系统 并尝试尽可能使用 JavaScript 最现代的功能 我经常发现我想使用现代 Unicode 正则表达式 例如 Unicode 属性转义 p L 看来 虽然许多 JS 平台都包含了越来越多的 ES6 功能
  • 缺少列的 GNU 并行 colsep

    我有一个程序 它采用可变数量的参数 并且我想与输入文件的每一行的一个实例并行运行该程序 输入文件以逗号分隔 某些行末尾缺少一些列 当列丢失时 如何指示 GNU Parallel 跳过参数替换 输入文件 A B C D E A B C D A
  • 删除列表中包含的数据帧行(不使用循环)

    问题解释 我有一个包含两列的数据框 A and B 我还有一个元组列表 其中元组的第一个元素是列中的元素 A 第二个在列中 B 我想删除与元组一致的数据帧的所有行 当然 我可以只使用循环 但我想要一个更智能的解决方案 更快 更干净 最小工作
  • 为 NumericUpDown 绘制边框

    我在应用程序中有一个用户表单 某些字段已验证 如果字段的值错误 则会为此控件绘制红色边框 它是通过处理制成的Paint该控件的事件 我延长了TextField and DateTimePicker to get Paint来自这些类对象的事
  • GTM 容器的预览和更新版本 | iOS系统

    我已经在我的 iOS 应用程序中集成了 google 标签管理器 我在某些地方陷入困境 How to preview the version before making it live I followed this https devel
  • 如何解释agda中的REL

    我试图理解 Agda 标准库的某些部分 但我似乎无法弄清楚REL FWIW 这是定义REL Binary relations Heterogeneous binary relations REL a b Set a Set b Level
  • 在文本框上按删除或退格键时获取删除的字符或文本

    我有一个文本框 我想在按退格键或删除键时获取删除的字符 我有一个按键事件处理程序 如果按键是退格键 我将捕获 现在 在其中我需要根据已删除的密钥执行一些任务 请帮忙 做了一些调整后getCursorPosition函数于这个线程 https