检测特定文本框是否具有焦点

时间:2013-11-19 18:08:55

标签: javascript forms greasemonkey userscripts

我首先要说的是,自从我最后编写Greasemonkey / Userscripts以来,已经有几年了,我的JavaScript有点生疏,这应该是一个简单的问题。

我正在尝试检测特定文本框是否具有焦点。 (我计划在特定框具有焦点并且用户按下回车键时运行脚本。)我的问题是该网站没有文本框的ID标记,只有名称标记<input type="text" size="20" value="" name="Category_Product_Search"></input>,几乎所有我看到的教程要求文本框有一个ID标记。

谢谢,

查尔斯

2 个答案:

答案 0 :(得分:2)

你可以简单地在focus事件上测试focus-element,尽管我建议绑定一个更接近的祖先元素,其中包含 all 你要测试的元素,而不是比我在演示代码中使用的body

function elementIs (e){
    var target = e.target,
        targetTagName = target.tagName.toLowerCase();
    /* Using a switch () rather than if/else if/else, for simplicity and
       ease of extension to other focusable element-types, though adjust
       to whichever technique you're more comfortable with:
    */
    switch (targetTagName){
        case 'input':
            if (target.name === 'Category_Product_Search') {
                // do something, it's an input and has the right name:
            }
    }
}
document.body.addEventListener('focus', elementIs, true);

JS Fiddle demo

参考文献:

答案 1 :(得分:0)

如果输入框的顺序是固定的,则可以使用form = document.getElementsByTagName('input')。然后你可以简单地使用所需文本框的索引号。

如果名称标签是唯一的,那么您也可以在此之后使用form.elements [“name”]。