kensoz

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

  •  
  •   kensoz · Dec 20, 2021 · 2963 views
    This topic created in 1698 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

    7 replies    2021-12-20 12:12:48 +08:00
    Archeb
        1
    Archeb  
       Dec 20, 2021   ❤️ 1
    https://jsfiddle.net/d3gzmkqs/

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