比如一个 input 表单,要求它只能使用英语输入法,
无法切换到中文或者无法使用中文输入
并不是对输入结果用正则表达式处理,而是直接控制输入法
查阅了资料,在早期 ie 中可以用 css 的 ime-mode 属性来控制,但 chrome 等现代浏览器则无效
我的结论是目前来看前端是无法控制输入法的,谨慎起见,想在确认一下是不是真的没有办法
1
Archeb 2021-12-20 10:54:36 +08:00 1
https://jsfiddle.net/d3gzmkqs/
把文本框设置成 readonly 然后用 keyup 事件处理输入?简单做了个 DEMO ,没有光标是个问题,除此之外应对简单的场景好像没问题 |
2
Archeb 2021-12-20 10:59:27 +08:00 1
String.fromCharCode 和 keyboardevent 的 keycode 的映射还是有很多不一样的地方,这个问题应该能解决,还有键盘的修饰键等等...不过都可以针对性地解决。
|
3
zhlxsh 2021-12-20 11:00:00 +08:00 via iPhone 1
非前端
印象中,密码框都是英文的 印象中,有些网站点击复制代码就是用的 ctrl+c ?是不是可以按其他按键 |
4
wunonglin 2021-12-20 11:06:40 +08:00
可以的。发行自己的浏览器即可,不仅是输入法,你想控制啥都行
|
5
kensoz OP @Archeb
wocao ,你太给力了老哥,基本上我就是想要这种效果,一会我试一试 我的需求是,在一个页面的 input 等待用户用扫码器扫码,取得二维码后发送后端,下一步用户填写个人信息 因为用户可以控制键盘所以在输入法是中文时,二维码就会打印中文拼音,你这个思路应该能行,感谢啊! 关于光标无所谓,我这个组件会把 input 透明度设置为 0 ,单纯的等待扫码输入 |
7
kensoz OP 试了一下
3 楼的方法更加适用于我的需求,而且简单,但是有一些局限性 比如在需要显示文本,需要锁定中文,日文的时候不行 1 楼的方法是一个更加具体的复杂的实现,适用于多样化的需求 比如锁定日文,显示文本等等 |