javascript - 格式化文本字段时反应光标跳跃
问题描述
我知道有很多关于这方面的话题,我已经尽我所能阅读和实施他们的解决方案,但我就是无法让它正常工作
我正在尝试格式化电话号码,以便它以某种格式显示。
我创建了一个演示它如何在我的应用程序中工作。 https://codesandbox.io/s/dank-leaf-94s3w?file=/src/App.js
编辑:抱歉再描述一下这个问题。
当您从前到后输入 # 时,一切正常
但是当我尝试修改中间数字时,每次输入后光标都会跳到末尾。
谢谢
解决方案
嗨,问题是您传递了一个新值,这就像输入整个值一样。这将导致光标移动到末尾。
您可以通过请求窗口动画帧并将光标移回原来的位置来克服它:
const caret = target.selectionStart;
const element = target;
window.requestAnimationFrame(() => {
element.selectionStart = caret;
element.selectionEnd = caret;
});
这是您的沙盒的副本。
推荐阅读
- android - 将gridview拉到最上面的项目时如何删除高亮效果
- angularjs - 状态有效时显示 2 张图像
- sql-server - 在另一个数据库中迁移到具有外部依赖项的 Azure Sql 数据库
- biztalk - 在 BizTalk 中存储键值对的最佳方式
- artifactory - 针对本地 Artifactory 的依赖解决需要很长时间
- css - 如何使它看起来像一个带有 CSS 的表格?
- javascript - 将脚本标记作为字符串加载并将其附加到 html 标头
- java - java.lang.ClassNotFoundException:找不到类“com.google.firebase.iid.internal.FirebaseInstanceIdInternal”
- java - java流找到匹配还是最后一个?
- python - pandasql OperationalError:SQL 变量太多