14 html javascript forms
我有一个index.html,其中有一个巨大的形式.该表单由此javascript提交:
byId("p").value = page;
byId("nav_container").focus();
document.forms["nav_form_main"].submit();
Run Code Online (Sandbox Code Playgroud)
焦点部分在这里不起作用......
我希望浏览器专注于页面的特定部分(几乎在顶部).
什么做的提示?
PS:我已经尝试将焦点放在submit()后面,同样的问题.
谢谢
Jai*_*cia 42
确保要聚焦的元素具有属性 tabindex="-1",否则该元素不可聚焦.
例如
<div id="myfocusablediv" tabindex="-1"></div>
Run Code Online (Sandbox Code Playgroud)
当你为一个元素设置tabindex = -1时,它允许它通过javascript获得focus().相反,如果你希望它通过tabing through元素获得焦点,那么你可以将tabindex属性设置为0.
function setFocusFixed( elm ){
if( !input ) return;
var savedTabIndex = elm.getAttribute('tabindex')
elm.setAttribute('tabindex', '-1')
elm.focus()
elm.setAttribute('tabindex', savedTabIndex)
}
// DEMO:
var buttons = document.querySelectorAll('button'),
input = document.querySelector('input');
buttons[0].addEventListener('click', ()=>input.focus())
buttons[1].addEventListener('click', ()=>setFocusFixed(input))Run Code Online (Sandbox Code Playgroud)
这个小函数只是简单地设置表单字段tabindex,-1以便DOM focus()方法可以生效,并立即将其设置回原始值.
您需要一个属性tabindex="0"才能聚焦(对我有用):tabindex="-1"从页面选项卡序列中删除元素(例如,它不再可以通过键盘聚焦)。
https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs-1/tabs.html
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex