我正在使用箭头让人们在我的网站上移动。当您尝试在表单字段中编写时,我不希望此功能存在。如何检查我的某个文本字段是否有焦点?
答案 0 :(得分:3)
我认为如果焦点位于文本框中,则默认情况下,Web浏览器会禁用带箭头键的页面移动。不需要额外的代码。
答案 1 :(得分:3)
我已使用document.activeElement.tagName
获取具有焦点的元素的tagName
,它将返回' TEXTAREA'' INPUT'等等。
据我所知和测试,它适用于所有现代浏览器。
答案 2 :(得分:2)
要判断您的某个文本字段是否为焦点,请将onfocus
和onblur
处理程序添加到要监视的文本字段中,并处理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