【问题标题】:ReactJS automatically simulate keyboardReactJS 自动模拟键盘
【发布时间】:2020-12-24 23:38:42
【问题描述】:

请有人帮帮我,在这里的代码框链接codesandboxlink 你可以看到 2 个输入类型的文本,我想在第二个输入中,当你聚焦并按下“退格”键时,光标指针将自动聚焦在第一次输入,谢谢你帮助我,希望你有一个美好的一天

【问题讨论】:

    标签: reactjs input keyboard frontend simulate


    【解决方案1】:

    您需要做的是监听onKeyDown 事件。当事件触发时,它会传递KeyboardEvent 参数,您可以使用该参数来检查按下的键和其他相关信息。在这种情况下,您需要查找KeyboardEvent.keyCode。键入时记录 keycode 将显示您刚刚按下的键的 keyCode。

    <input
      type="text"
      onKeyDown={(e) => {
        console.log('pressing', e.keyCode)
        }
      }}
    />
    

    之后,您需要获取input 的引用才能有条件地聚焦输入。

    export default function Demo() {
      const onKeyDown = (e) => {
        const BACKSPACE_KEY = 8;
        const ENTER_KEY = 13;
        const form = e.target.form;
        const index = Array.prototype.indexOf.call(form, e.target);
    
        let el;
        if (e.keyCode === ENTER_KEY) {
          el = form.elements[index + 1];
        } else if (e.keyCode === BACKSPACE_KEY) {
          el = form.elements[index - 1];
        }
        if (el) el.focus();
    
        e.preventDefault();
      };
    
      return (
        <form>
          <input type="text" onKeyDown={onKeyDown} />
          <input type="text" onKeyDown={onKeyDown} />
          <input type="text" onKeyDown={onKeyDown} />
          <input type="text" onKeyDown={onKeyDown} />
          <input type="text" onKeyDown={onKeyDown} />
        </form>
      );
    }
    

    现场示例

    【讨论】:

    • 谢谢,它完全符合我的预期,但是当我有超过 2 个时会发生什么,我的意思是它可以是 20 或 30 个输入,因为我一直在做一个文本编辑器,所以我无法手动为每个人制作参考,非常感谢
    • 您不需要编写任何代码来执行此操作。只需按Tab 聚焦下一个输入,按Shift+Tab 聚焦上一个输入
    • 但我找不到自动按tab或shift+tab的方法,要求不接受手动操作
    • @TamDo 我刚刚更新了我的代码和实时示例。现在应该可以正常工作了。
    • 非常感谢,我看了一下,这将是我继续我的项目的完美典范
    猜你喜欢
    • 2011-09-17
    • 2012-11-18
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2012-03-13
    相关资源
    最近更新 更多