检测特定文本框是不是有焦点[重复]

Posted

技术标签:

【中文标题】检测特定文本框是不是有焦点[重复]【英文标题】:Detect if a specific textbox has focus [duplicate]检测特定文本框是否有焦点[重复] 【发布时间】:2013-12-03 10:25:44 【问题描述】:

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

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

谢谢,

查尔斯

【问题讨论】:

【参考方案1】:

您可以简单地在其 focus 事件上测试焦点元素,但我建议绑定到一个更接近的祖先元素,其中包含您要测试的 所有 元素,而不是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.

参考资料:

switch () statement.

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于检测特定文本框是不是有焦点[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将焦点设置在 xaml wpf 中的文本框上

vb6 webbrowser 如何判断当前网页中获取焦点的是否一个文本框?

文本输入框内实时检测输入的字数

android单击文本框默认文字消失

JS文本框不能获得焦点

文本框获得焦点时,显示旁边的文字