单击时如何再次将焦点状态应用于同一元素?

时间:2015-08-15 02:06:50

标签: javascript jquery

对于我的表单输入,我想重新执行我的聚焦状态的动画,输入如下:

<input type="text" class="form-control">

您可以在此处看到它:https://jsfiddle.net/esg1dzy0/

说完了,我不能这样做:

  $(document.activeElement).click(function(){
    this.focus();
  });

这可能吗?我做错了什么?

2 个答案:

答案 0 :(得分:2)

您需要先模糊元素。

在此之前,您需要确保这不是元素的第一次点击。

此外,您的原始选择器只会选择您的代码段运行时处于活动状态的元素。

最后,使用mousedown来避免闪烁。

$('.form-control').mousedown(function(){
    if(!$(this).is(':focus')) return;
    $(this).blur().focus();
});

答案 1 :(得分:0)

我希望这可以帮到你:

$('.form-control').on('click', function(){
  var $this = $(this);
  var duration = 300;
  var enableAgain = function(){
    $this.blur().focus();
  };

  setTimeout(enableAgain, duration);
});

这会在blur()之后再次触发focus()300 milliseconds事件(在最好的情况下),这与transition-duration相同,您可能想要更高价值如350

BTW我已编辑了您的https://jsfiddle.net/esg1dzy0/文件。