V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kensoz
V2EX  ›  前端开发

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

  •  
  •   kensoz · 2021-12-20 10:28:33 +08:00 · 2059 次点击
    这是一个创建于 851 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    7 条回复    2021-12-20 12:12:48 +08:00
    Archeb
        1
    Archeb  
       2021-12-20 10:54:36 +08:00   ❤️ 1
    https://jsfiddle.net/d3gzmkqs/

    把文本框设置成 readonly 然后用 keyup 事件处理输入?简单做了个 DEMO ,没有光标是个问题,除此之外应对简单的场景好像没问题
    Archeb
        2
    Archeb  
       2021-12-20 10:59:27 +08:00   ❤️ 1
    String.fromCharCode 和 keyboardevent 的 keycode 的映射还是有很多不一样的地方,这个问题应该能解决,还有键盘的修饰键等等...不过都可以针对性地解决。
    zhlxsh
        3
    zhlxsh  
       2021-12-20 11:00:00 +08:00 via iPhone   ❤️ 1
    非前端
    印象中,密码框都是英文的
    印象中,有些网站点击复制代码就是用的 ctrl+c ?是不是可以按其他按键
    wunonglin
        4
    wunonglin  
       2021-12-20 11:06:40 +08:00
    可以的。发行自己的浏览器即可,不仅是输入法,你想控制啥都行
    kensoz
        5
    kensoz  
    OP
       2021-12-20 11:08:47 +08:00
    @Archeb
    wocao ,你太给力了老哥,基本上我就是想要这种效果,一会我试一试
    我的需求是,在一个页面的 input 等待用户用扫码器扫码,取得二维码后发送后端,下一步用户填写个人信息
    因为用户可以控制键盘所以在输入法是中文时,二维码就会打印中文拼音,你这个思路应该能行,感谢啊!
    关于光标无所谓,我这个组件会把 input 透明度设置为 0 ,单纯的等待扫码输入
    kensoz
        6
    kensoz  
    OP
       2021-12-20 11:13:11 +08:00
    @zhlxsh
    密码框也可以,感谢老哥提醒!现在我正好会隐藏这个组件,正好可以用。一会试一下
    kensoz
        7
    kensoz  
    OP
       2021-12-20 12:12:48 +08:00   ❤️ 1
    试了一下
    3 楼的方法更加适用于我的需求,而且简单,但是有一些局限性
    比如在需要显示文本,需要锁定中文,日文的时候不行
    1 楼的方法是一个更加具体的复杂的实现,适用于多样化的需求
    比如锁定日文,显示文本等等
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2570 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:32 · PVG 23:32 · LAX 08:32 · JFK 11:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.