reactjs - 在 React Input 中,如何将输入的每个字母转换为大写字母,但是您可以在中间输入而光标不会在每次按键时跳到结尾?
问题描述
我见过很多问题,但没有真正奏效的解决方案。我有一个反应输入:
<input
type="text"
onChange={onChangeHandler}
value={value}
/>
和一个 onChange 处理程序:
const onChangeHandler = event => {
setStateValue(event.target.value.toUpperCase());
}
嘿,它可以使我输入 CAPS 的所有内容,但是如果我要单击输入的中间以尝试在中间输入,在按一下键后,它会将光标跳到末尾,这真的很烦人.
我正在使用钩子。
我想要的甚至是可行的,还是我们只是被 React 和它的工作方式锁在了一个角落里?
我见过一些极其冗长和复杂的解决方案,以及尝试跟踪光标和恢复位置,但我无法让它工作。
这应该是一件简单的事情,但从我读过的内容来看,似乎 FB 已经锁定了他们的预期行为,并且在简单地完成这项工作方面并不灵活。
解决方案
Please replace onChangeHandler() with:
const onChangeHandler = e => {
var start = e.target.selectionStart;
var end = e.target.selectionEnd;
e.target.value = e.target.value.toUpperCase();
e.target.setSelectionRange(start, end);
setStateValue(e.target.value.toUpperCase());
};
推荐阅读
- sql - ORACLE中这个运行4秒左右的SQL语句如何优化?我想查询少用点时间
- java - 我无法使用 Android Studio Java 将用户添加到 Firebase Authetnication
- c++ - C++ 插入运算符 << 有两个整数
- clojure - 如何修复这个宏?
- sockets - 在 Flutter 中使用 listen() 从 TCP Socket 获取数据
- python - 如何从 Cython 中的数组列表中检索数组条目
- c - 程序以错误的方式打印字符串。字符串
- javascript - 当用户在 React 中关闭选项卡时如何删除 Firestore 文档?
- docker - 如何使用 docker 在 alpine 图像上以 root 用户身份运行 bash?su:必须 suid 才能正常工作
- python - 在 CentOS 7 的本地环境中安装 CMake 软件包时出现问题