2011-11-13 46 views
2

我想在單擊第一個輸入後替換文本輸入以輸入密碼,我的代碼創建它,但它不關注新輸入,我想更改此設置。在創建它之後專注於輸入

這是我的代碼。

$('.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()不做焦點,所以我不知道如何完成它。

+0

如何設置超時setTimeout(function(){passInput.focus()},400)? –

+0

你爲什麼要這樣做?這聽起來像一個非常糟糕的主意。 – SystemParadox

回答

2

嘗試

var v = $('<div><input class="pwd" type="password" /></div'); 
padre.appendTo(v); 
$('.pwd').focus(); 

這可能有助於增加再回想代碼即可獲得焦點。

6

passInput<div>元素,而不是<input>,這就是爲什麼它不能得到重點。

它改成這樣:

passInput.find("input").focus(); 

其實你可以重寫整體功能爲一體鏈語句,像這樣:

$(this) 
    .parent() 
    .append($(document.createElement("div")) 
     .append($('<input type="password">').focus()) 
    ) 
    .end() 
    .remove(); 

雖然,從我的頭頂,我不t知道它是否會在元素被添加到DOM之前工作到.focus()