代码之家  ›  专栏  ›  技术社区  ›  SteamDev

如何防止iOS ui键盘箭头触发“tab”操作?

  •  0
  • SteamDev  · 技术社区  · 8 年前

    我有一个HTML表单,特别是在iOS上,我需要防止用户在出现模式时通过输入“切换”。

    我在“tabbing”周围加了引号,因为iOS键盘没有标准 tab 键,它使用键盘上方工具栏中的上一个/下一个箭头。(见下图)

    enter image description here

    这些键没有附加DOM事件,因此请读入 e.keyCode 和使用 e.preventDefault() 不是选项。有什么想法吗?

    2 回复  |  直到 8 年前
        1
  •  1
  •   SteamDev    8 年前

    我最终实施的解决方案大致如下:

    HTML格式

    <!-- modal content -->
    <div class="search-modal">
      <input type="search" id="search-input" />
      <input type="text" onfocus="refocus('search-input')" style="opacity:0;" />
    </div>
    
    <!-- main page content -->
    <div class="page-body">
      <input type="text" name="fname" />
      <input type="text" name="lname" />
      <input type="email" name="email" />
      <input type="tel" name="phone" />
      <!-- ... -->
    </div>
    

    JS公司

    function refocus(id){
      document.getElementById(id).focus();
    }
    

    每当使用“下一个”箭头时,不可见的输入将获得焦点。它会立即将焦点放回原始输入;从而防止非模态输入获得焦点。

        2
  •  0
  •   spirit    8 年前

    不幸的是,我没有iOS要测试。但我认为您可以尝试以下操作:

    1. 禁用除第一个输入以外的所有输入。
    2. 在用户输入一些信息并对其进行验证后,启用下一个输入

    有点疯狂,但可能有效=)。

    附言 .刚刚意识到。你的意思是,当一个模态出现时,用户能够切换到模态下的输入吗?

    在这种情况下,您必须强制 focus() 在模态形式的第一个元素上,“tabbing”将在新形式中工作。