如何使用纯jQuery延迟删除字段焦点?

kon*_*ung 2 jquery focus blur delay settimeout

请考虑以下代码:

  //Focus on the field on page load.
  $("#user_login").focus();

  //Remove prompt after a couple of seconds.
  window.setTimeout(function() {
    $("#user_login").blur();},
  3000);
Run Code Online (Sandbox Code Playgroud)

我有几个工具提示和其他事件绑定到焦点上的#user_login输入.但是不要惹恼用户,我想在几秒钟之后删除焦点.

这是我现在正在做的一种方式 - 因为我可以理解delay()在这种情况下不起作用.还有其他纯粹的jquery方法吗?有点像:

$("#user_login").focus().delay(3000).blur();
Run Code Online (Sandbox Code Playgroud)

谢谢

PS:我的解决方案现在正常工作,这更多用于教育目的.

Ali*_*guy 6

delay() 仅适用于动画.

制作一个插件:

(function($) {
    $.fn.promptTooltip = function(duration) {
        $this = $(this);
        $this.focus();
        setTimeout(function() {
            $this.blur();
        }, duration);
    };
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

使用插件:

$('#testme').promptTooltip(3000);
Run Code Online (Sandbox Code Playgroud)

这是一个愚蠢的演示:http://jsfiddle.net/AlienWebguy/gKECa/