#jquery
#jquery
Вопрос:
Я хотел бы заменить ввод текста на ввод пароля после нажатия на первый, мой код создает его, но он не фокусируется на новом вводе, я хотел бы это изменить.
Вот мой код.
$('.input_center input:text').click(function(){
var padre = $(this).parent();
var passInput = $(document.createElement("div"));
passInput.html('<input type="password">');
padre.append(passInput);
passInput.focus();
$(this).remove();
});
Этот passInput.focus () не выполняет фокусировку, поэтому я не знаю, как это сделать.
Комментарии:
1. как насчет установки таймаута, такого как setTimeout(функция(){passInput.focus()}, 400)?
2. Почему вы хотите это сделать? Это звучит как очень плохая идея.
Ответ №1:
passInput
это <div>
элемент, а не <input>
, поэтому он не может получить фокус.
Измените его на это:
passInput.find("input").focus();
На самом деле вы могли бы переписать всю эту функцию в один связанный оператор следующим образом:
$(this)
.parent()
.append($(document.createElement("div"))
.append($('<input type="password">').focus())
)
.end()
.remove();
Хотя, на первый взгляд, я не знаю, сработает ли это с .focus()
элементом до того, как он будет добавлен в DOM.
Ответ №2:
Попробуйте
var v = $('<div><input class="pwd" type="password" /></div');
padre.appendTo(v);
$('.pwd').focus();
Это может помочь добавить, а затем отозвать код, чтобы получить фокус.