如何从tabindex流中删除浏览器函数

How to remove browsers functions from tabindex flow?

本文关键字:删除 浏览器 函数 tabindex      更新时间:2023-09-26

我已经在JSP页面中的所有元素上设置了选项卡索引,这很好,但在选项卡索引流中,浏览器的功能也很集中。

示例:当选项卡的焦点在页面的最后一个元素上时,如果我再次点击选项卡,则焦点将转到浏览器的地址栏、刷新按钮、选项卡窗口和主页按钮。

我希望重点应该放在第一个元素上,它在最后一个标签索引10之后有标签索引1。

我如何限制这些浏览器功能的标签聚焦。我使用的是Javascript/JQuery和IE 9。

以下是我的页面:

<html>
    <body>
        <script src="jquery.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                //functions
            });
        </script>
        <div id="xyz">
            <ul >
                <li>
                    <div>
                        <input type="text" maxlength="30" tabindex = "1" />
                        <br>
                        <input type="text" maxlength="30" tabindex = "2" />
                        <br>
                    </div>
                </li>
            </ul>
            <ul>
                <li>
                    <div>
                        <input type="checkbox" id="checkBox1" value="false" tabindex ="3"/>
                    </div>
                    <div>
                        <input type="checkbox" id="checkBox2" value="false" tabindex ="4"/>
                    </div>
                </li>
                <li>
                    <div>
                        <input type="button" name="saveBtn" id="saveBtn" value="SaveMe" tabindex ="5"/>
                    </div>
                    <div>
                        <input type="button" name="clearBtn" id="clearBtn" value="ClearMe" tabindex ="6"/>
                    </div>
                </li>
            </ul>
        </div>
    </body>
</html>

如果当前焦点是最后一个元素,则可以使用下面的脚本来聚焦第一个元素。

<input id="firstElement" value="" />
<!---series of dom element-->
<input id="lastElement" value="" />
<script>
   $('#lastElement').keydown(function(e) {
      if (e.keyCode == 9) {
          $('#firstElement').focus();
          e.preventDefault();
      }
   });
</script>

您可以将keydown事件与.index().length检查结合使用:

$('#xyz').find(':input').last().keydown(function(e) {
  if ($(this).attr('tabindex') == $('#xyz').find(':input').length) {
    if (e.keyCode === 9) {
      e.preventDefault();
      $('input[type="text"]').first().trigger('focus');
    }
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="xyz">
  <ul>
    <li>
      <div>
        <input type="text" maxlength="30" tabindex="1" />
        <br>
        <input type="text" maxlength="30" tabindex="2" />
        <br>
      </div>
    </li>
  </ul>
  <ul>
    <li>
      <div>
        <input type="checkbox" id="checkBox1" value="false" tabindex="3" />
      </div>
      <div>
        <input type="checkbox" id="checkBox2" value="false" tabindex="4" />
      </div>
    </li>
    <li>
      <div>
        <input type="button" name="saveBtn" id="saveBtn" value="SaveMe" tabindex="5" />
      </div>
      <div>
        <input type="button" name="clearBtn" id="clearBtn" value="ClearMe" tabindex="6" />
      </div>
    </li>
  </ul>
</div>