2014-03-30 5 views
0

У меня есть поле пароля и маленький значок справа, и я хочу показать введенный пароль в течение 2 секунд, когда пользователь нажимает на значок. Что я сделал.Функция задержки JQuery не работает

$("#showpass").click(function(){ 
    $('#pass').attr('type','text').delay(2000).attr('type','password'); 
); 

Он ничего не делает, но когда я делаю только $('#pass').attr('type','text') это работает без каких-либо проблем.

+0

Если я не ошибаюсь, не все браузеры поддерживают изменение типа ввода. – putvande

+0

, но многие, по крайней мере, все новые. –

+0

А я вижу .. IE не поддерживал его в прошлом .. но он делает это сейчас. – putvande

ответ

1

Задержка работает только с функциями, которые используют очередь jQuery, например анимацию, поэтому вы не получаете никакой задержки между установкой типа текста и повторением ввода пароля.

Ваша конкретная проблема может быть решена с помощью setTimeout().

$("#showpass").click(function(){ 
    var pass = $('#pass').attr('type','text'); 
    setTimeout(function() { 
     pass.attr('type','password'); 
    }, 2000); 
); 
+0

ok Я получил это благодаря большому количеству помощи –

1

Метод .delay() лучше всего задерживать между обработанными в очереди jQuery эффектами. Поскольку он ограничен - он, например, не предлагает способ отменить задержку. .delay() не является заменой встроенной функции JavaScript setTimeout, которая может быть более подходящей для определенных случаев использования .

лучше использовать его только для вопросов анимации:

использовать SetTimeout вместо этого.

Смежные вопросы