请问前端(js)可以控制和切换输入法吗?

2021-12-20 10:28:33 +08:00
 kensoz

比如一个 input 表单,要求它只能使用英语输入法,

无法切换到中文或者无法使用中文输入

并不是对输入结果用正则表达式处理,而是直接控制输入法

查阅了资料,在早期 ie 中可以用 css 的 ime-mode 属性来控制,但 chrome 等现代浏览器则无效

我的结论是目前来看前端是无法控制输入法的,谨慎起见,想在确认一下是不是真的没有办法

2253 次点击
所在节点    前端开发
7 条回复
Archeb
2021-12-20 10:54:36 +08:00
https://jsfiddle.net/d3gzmkqs/

把文本框设置成 readonly 然后用 keyup 事件处理输入?简单做了个 DEMO ,没有光标是个问题,除此之外应对简单的场景好像没问题
Archeb
2021-12-20 10:59:27 +08:00
String.fromCharCode 和 keyboardevent 的 keycode 的映射还是有很多不一样的地方,这个问题应该能解决,还有键盘的修饰键等等...不过都可以针对性地解决。
zhlxsh
2021-12-20 11:00:00 +08:00
非前端
印象中,密码框都是英文的
印象中,有些网站点击复制代码就是用的 ctrl+c ?是不是可以按其他按键
wunonglin
2021-12-20 11:06:40 +08:00
可以的。发行自己的浏览器即可,不仅是输入法,你想控制啥都行
kensoz
2021-12-20 11:08:47 +08:00
@Archeb
wocao ,你太给力了老哥,基本上我就是想要这种效果,一会我试一试
我的需求是,在一个页面的 input 等待用户用扫码器扫码,取得二维码后发送后端,下一步用户填写个人信息
因为用户可以控制键盘所以在输入法是中文时,二维码就会打印中文拼音,你这个思路应该能行,感谢啊!
关于光标无所谓,我这个组件会把 input 透明度设置为 0 ,单纯的等待扫码输入
kensoz
2021-12-20 11:13:11 +08:00
@zhlxsh
密码框也可以,感谢老哥提醒!现在我正好会隐藏这个组件,正好可以用。一会试一下
kensoz
2021-12-20 12:12:48 +08:00
试了一下
3 楼的方法更加适用于我的需求,而且简单,但是有一些局限性
比如在需要显示文本,需要锁定中文,日文的时候不行
1 楼的方法是一个更加具体的复杂的实现,适用于多样化的需求
比如锁定日文,显示文本等等

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/823256

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX