我如何将焦点设置在隐藏的文本框元素上?
我尝试了这个方法:
document.getElementById("textControl_fd_component_JSON_TASK_NStext64").focus();
但是,在这里它不起作用。因为在这种情况下,alert(document.activeElement.id);
返回 null
。
如果我将此字段设置为可见,则上述脚本可以正常工作。你有什么想法,我出了什么问题吗?
我如何将焦点设置在隐藏的文本框元素上?
我尝试了这个方法:
document.getElementById("textControl_fd_component_JSON_TASK_NStext64").focus();
但是,在这里它不起作用。因为在这种情况下,alert(document.activeElement.id);
返回 null
。
如果我将此字段设置为可见,则上述脚本可以正常工作。你有什么想法,我出了什么问题吗?
如果你真的需要这么做,那就将盒子设为透明而不是隐藏:
opacity:0;
filter:alpha(opacity=0);
或者,如果你想确保用户不会意外点击它,只需将输入框放在一个带有
pointer-events: none;
的 div 中即可。
width: 0;
overflow: hidden;
然而,肯定有更好的方法可以实现你想要的效果,也许可以使用 keydown
/keypress
事件。
display: none;
)DOM节点上添加一个focusable
属性,使其能够获得焦点(无论是否有JavaScript来处理并向用户显示某些内容)。 - AJPkeydown
/keypress
事件无法满足 IME 输入需求。 - dan_waterworth如果您需要解决方法且无法更改不透明度属性,可以添加一些js。
/* bind a click handler to your trigger */
jQuery('#your-search-trigger').on('click', function searchIconEventhandler (event) {
/* in case your field is fading, cheat a little (check css transition duration) */
setTimeout ( function timeoutFunction () {
/* show the cursor */
jQuery('#your-search-input').focus();
}, 100);
});
使用Apsillers的答案时,我遇到了同样的情况:
Apsillers的答案是针对提出的问题的正确答案,但我想给出一个实际的例子来说明这是何时必要的。
具体而言,如果您正在使用任何类型的脚本/插件来制作“花哨”的输入(即单选/复选框元素,选择元素),则可以隐藏表单元素。但是,如果您的脚本或插件编写得不好,则可能会消除键盘可访问性。通过允许所有元素具有焦点来保留表单的流程,可以为网站用户节省很多麻烦。