使用JavaScript或jQuery检测哪个表单输入具有焦点

Eve*_*ews 30 javascript forms jquery focus

如何使用JavaScript或jQuery检测哪个表单输入具有焦点?

在函数中,我希望能够确定哪个表单输入具有焦点.我希望能够在直接的JavaScript和/或jQuery中执行此操作.

Jua*_*des 59

document.activeElement它已经在IE中得到了很长时间的支持,最新版本的FF和Chrome也支持它.如果没有焦点,则返回document.body对象.


Pao*_*ino 17

我不确定这是否是最有效的方法,但您可以尝试:

var selectedInput = null;
$(function() {
    $('input, textarea, select').focus(function() {
        selectedInput = this;
    }).blur(function(){
        selectedInput = null;
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 对于大型DOM结构非常不合适,不支持动态添加元素,链接怎么样?感到惊讶的是这被选为正确的答案 (16认同)
  • 大多数情况下,少于10个输入并且不动态添加它们?也许对于简单的表单,而不是复杂的Web应用程序.如果document.activeElement在所有A级浏览器中都可用,为什么你会使用更复杂,技术上更差的解决方案?此外,如果焦点转移到链接,这将给你一个误报.我只是警告OP. (6认同)
  • @混沌.你是什​​么意思很难找到更好的解决方案?只需检查`document.activeElement`的值.看我的回答 (5认同)
  • @Juan Mendes:并非所有情况都必须是一个全面的解决方案.信不信由你,大多数时候你会有<10个输入,没有动态添加字段,这样就可以了. (2认同)