Как убрать фокус поля с задержкой, используя чистый jQuery? - PullRequest
2 голосов
/ 14 октября 2011

Пожалуйста, рассмотрите следующий код:

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

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

У меня есть несколько всплывающих подсказок и других событий, связанных с вводом #user_login в фокусе.Но чтобы не раздражать пользователя, я хочу убрать фокус через пару секунд.

Это то, что я делаю сейчас - поскольку я понимаю, что delay () не будет работать в этом случае.Есть ли другой чистый способ сделать это?Что-то вроде:

$("#user_login").focus().delay(3000).blur();

Спасибо

PS: Мое решение работает отлично, как есть, это больше для образовательных целей.

1 Ответ

6 голосов
/ 14 октября 2011

delay() работает только с анимациями.

Создайте плагин:

(function($) {
    $.fn.promptTooltip = function(duration) {
        $this = $(this);
        $this.focus();
        setTimeout(function() {
            $this.blur();
        }, duration);
    };
})(jQuery);

Используйте плагин:

$('#testme').promptTooltip(3000);

Вот глупая демонстрация: http://jsfiddle.net/AlienWebguy/gKECa/

...