javascript - JavaScript(或 jQuery)中是否有 'has focus'?

标签 javascript jquery jquery-selectors

有什么我可以这样做的吗(也许通过插件)

if ( ! $('form#contact input]').hasFocus()) {
  $('form#contact input:first]').focus();
}

基本上,将焦点设置到第一个输入,但前提是用户尚未点击任何内容?

我知道这也行,但还有更优雅的吗?

$(function() {
  var focused = false;
  $('form#contact input]').focus(function() {
    focused = true;
  }); 
  setTimeout(function() {
    if ( ! focused) {      
      $('form#contact input:first]').focus();
    }
  }, 500);
});

最佳答案

没有原生解决方案,但可以通过更优雅的方式实现:

jQuery.extend(jQuery.expr[':'], {
  focus: "a == document.activeElement"
});

您正在定义一个新的选择器。参见 Plugins/Authoring .然后你可以这样做:

if ($("...").is(":focus")) {
  ...
}

或:

$("input:focus").doStuff();

关于javascript - JavaScript(或 jQuery)中是否有 'has focus'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2683742/

相关文章:

javascript - 使输入字段的一部分不可编辑

Jquery选择自定义标签的innerText

Jquery 选择器不工作

jquery - 移动设备上的全日历多单元格选择?

javascript - 超时或其他事件完成后触发事件一次

javascript - 为什么我在尝试创建一个系统来生成带有用户首字母缩写的随机代码时提示输入用户名失败?

javascript - 从浏览器开发人员工具控制台中的当前页面解析 json

javascript - TinyMce 4 util.i18n.translate() 用法

javascript - 尝试制作模式弹出菜单

javascript - 缓存mapbox平铺图像