我首先要说的是,自从我最后编写Greasemonkey / Userscripts以来,已经有几年了,我的JavaScript有点生疏,这应该是一个简单的问题。
我正在尝试检测特定文本框是否具有焦点。 (我计划在特定框具有焦点并且用户按下回车键时运行脚本。)我的问题是该网站没有文本框的ID标记,只有名称标记<input type="text" size="20" value="" name="Category_Product_Search"></input>
,几乎所有我看到的教程要求文本框有一个ID标记。
谢谢,
查尔斯
答案 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);
参考文献:
答案 1 :(得分:0)
如果输入框的顺序是固定的,则可以使用form = document.getElementsByTagName('input')。然后你可以简单地使用所需文本框的索引号。
如果名称标签是唯一的,那么您也可以在此之后使用form.elements [“name”]。