如何使tabIndex(输入字段)在页面加载的顶部开始 - Jquery

Posted

技术标签:

【中文标题】如何使tabIndex(输入字段)在页面加载的顶部开始 - Jquery【英文标题】:How to make tabIndex(input field) to begin at the top on page load - Jquery 【发布时间】:2020-03-16 17:20:43 【问题描述】:

好吧,我真的想不通。加载我的一个页面时,搜索字段会自动聚焦。这打破了页面的标签顺序。在搜索字段之前有跳过链接和其他以正确的 Tab 键顺序排列的链接,但由于某种原因,输入字段总是首先获得焦点。跳格后,跳格顺序是正确的,但随后在重新跳格时跳过搜索字段或在输入字段处开始跳格。以下是该元素的片段:

<input id="search-input" quicksearch="false" type="text" autocomplete="off" name="q" aria-label="Search" value="" placeholder="Search..." tabindex="1">

我在其中手动添加了 tabindex="1" 来测试它,但仍然没有达到我想要的效果。它通过实际在顶部开始标签来半修复它,但随后不适合标签顺序,这是问题所在。我添加了 tabindex="0", "-1", "2" 但每一次,该输入字段都是最先关注的。我已经使用 jQuery 从输入字段中删除了自动对焦,并且可以验证它是否已将其删除,但无济于事。我检查了所有其他元素的选项卡索引,它们要么是“0”,要么是“-1”。

在最先关注的输入字段之外,Tab 顺序是准确的。我只希望标签从页面顶部开始,并按逻辑方式向下工作,并像应该做的那样包含输入字段!

是不是 jQuery 不够快,无法在包含在硬 html 中之前移除自动对焦?

【问题讨论】:

【参考方案1】:

您可以通过blur() 取消输入控件的焦点。

function focusInput() 
  document.getElementById('search-input').focus();

function blurInput() 
  document.getElementById('search-input').blur();
<input type="text" id="search-input" value="Sample">
<br><br>
<button type="button" onclick="focusInput()">Click to gain focus</button>
<button type="button" onclick="blurInput()">Click to lose focus</button>

【讨论】:

这会使它失去焦点,但不幸的是,它会以标签顺序保留在该位置。

以上是关于如何使tabIndex(输入字段)在页面加载的顶部开始 - Jquery的主要内容,如果未能解决你的问题,请参考以下文章

即使正确设置了 tabindex,提交按钮也没有聚焦

如何使文本框显示与其控件不同的字段?

在页面加载时重置tabindex

如何使用 jQuery 在页面加载时关注表单输入文本字段?

页面加载后如何触发对 WebView 中文本输入字段的关注?

如果页面重新加载,如何在表单上保留对单选按钮的选择