如何使用JavaScript将焦点设置在隐藏的文本框字段上?

时间:2012-06-01 13:40:51

标签: javascript focus

如何将焦点设置在隐藏的文本框元素上?

我试过了:

document.getElementById("textControl_fd_component_JSON_TASK_NStext64").focus(); 

但是,这在这里不起作用。在这种情况下,alert(document.activeElement.id);会返回null

如果我将此字段显示,则上述脚本可以正常工作。我发现错误的任何想法?

4 个答案:

答案 0 :(得分:46)

如果您确实需要这样做,请将框设为透明而不是隐藏:

opacity:0;
filter:alpha(opacity=0);

或者,如果您想确保用户不小心点击它,只需将输入放在div中

width: 0;
overflow: hidden;

然而,肯定有更好的方式来做你想做的事情,可能使用keydown / keypress事件。

答案 1 :(得分:0)

我不认为这是允许的,至少在IE中是这样。我从jQuery's focus page获得了这些信息。

答案 2 :(得分:0)

如果您需要解决方法并且无法更改不透明度attr,则可以添加一些j。

/* 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);
});

答案 3 :(得分:-1)

使用Apsillers回答,我对同样情况的设置包括:

  1. 父级div,位置:relative;
  2. 子表单元素位置:绝对;的z-index:0;不透明度:0;滤波器:α(不透明度= 0);
  3. 第二个子元素位置:绝对; z-index :(值> 0)(定位为覆盖透明输入)。
  4. 鉴于提出问题,Aspillers的回答是正确的,但我想提供一个必要时的实例。

    具体来说,如果您使用任何类型的脚本/插件来制作“奇特”输入(即无线电/校验元素,选择元素),则可以隐藏表单元素。但是如果你的脚本或插件写得不好,它可以消除键盘的可访问性。通过允许所有元素具有焦点来保留表单流可以为网站用户节省很多麻烦。