检查焦点是否在文本字段上

时间:2011-07-07 23:26:43

标签: javascript

我正在使用箭头让人们在我的网站上移动。当您尝试在表单字段中编写时,我不希望此功能存在。如何检查我的某个文本字段是否有焦点?

4 个答案:

答案 0 :(得分:3)

我认为如果焦点位于文本框中,则默认情况下,Web浏览器会禁用带箭头键的页面移动。不需要额外的代码。

答案 1 :(得分:3)

我已使用document.activeElement.tagName获取具有焦点的元素的tagName,它将返回' TEXTAREA'' INPUT'等等。

据我所知和测试,它适用于所有现代浏览器。

答案 2 :(得分:2)

要判断您的某个文本字段是否为焦点,请将onfocusonblur处理程序添加到要监视的文本字段中,并处理onfocus处理程序中的状态更改。例如,

<script>
var textFieldInFocus;
function handleOnFocus(form_element)
{
   textFieldInFocus = form_element;
}
function handleOnBlur()
{
   textFieldInFocus = null;
}
</script>
<form>
  <input type="text" name="text1" onfocus="handleOnFocus(this)" onblur="handleOnBlur()"/>
  <input type="text" name="text2"/>
  <textarea name="textarea1" onfocus="handleOnFocus(this)" onblur="handleOnBlur()"></textarea>
</form>

鉴于上面的代码,您可以使用其他JS代码检查textFieldInFocus以查看它是否已定义(文本字段当前是否已聚焦),并且该值将是焦点中的文本字段表单元素。例如,

if(textFieldInFocus)
{
    alert("The textField that was currently focused is " + textFieldInFocus);
}

添加onfocus和onblur处理程序的一种更简单,更简单的方法是使用jQuery,但由于没有提及,我写了一个简单的小实现。

此外,在更改键盘和鼠标事件的默认行为时要小心,因为您可能妨碍依赖于您自己可能无法测试的行为的辅助功能设备。

答案 3 :(得分:0)

陷阱您在文档/正文级别使用的任何键盘事件,然后使用事件的target属性来确定该事件是应用于textarea还是输入(或您要排除的任何其他控件)和只在适当的时候做你的网站导航。

自从我尝试编写关注事件属性的事件处理代码而不使用JQuery来执行所有跨浏览器兼容性时,已经有一段时间了,所以以下可能会有些错误,但是应该给你足够的时间继续解决其余的自己。谷歌是你的朋友。 (但我强烈建议使用库(JQuery或其他)来规范化各种浏览器的事件处理。)无论如何,从内存IE的事件属性使用srcElement而其他人使用{{1 (?)为您提供对事件应用的元素的引用。所以,话虽如此,我建议这样的事情:

target