2011-11-13 13 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は、<input>ではなく、<div>の要素です。そのため、フォーカスが得られないのです。これに

変更して:あなたは、実際にそうような1つのチェーンの文にその関数全体を書き換えることができ

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

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

けれども、私の頭の上から、私は「ドンそれがDOMに追加される前に要素が.focus()になるかどうかは分かりません。

関連する問題