Divがクリックされたときにinput要素をフォーカスしたい。
私のHTMLは次のようになります。
_<div class="placeholder_input">
<input type="text" id="username" maxlength="100" />
<div class="placeholder_container">
<div class="placeholder">username</div>
</div>
</div>
_
そして私のスクリプトは:
_$("#username").focus(function() {
$(this).next().hide();
});
$(".placeholder_input").mousedown(function() {
$(this).children(":first").focus();
});
_
テキストボックスをクリックすると、プレースホルダーテキストは正しく消えますが、点滅しているカーソルがテキストボックスに表示されません。 (そして私はテキストボックスにテキストを入力することはできません)
mousedown
イベントハンドラー内では、$(this).children(":first")
式が正しい入力要素を選択するため、focus()
呼び出しが機能しない理由がわかりません。
mousedown
の使用を主張する場合は、次のティックまでフォーカスを遅らせます
$(".placeholder_input").mousedown(function() {
var $el = $(this).children(":first");
setTimeout(function() {
$el.focus();
}, 0);
});
mousdown
は機能しません。click
を使用してください。
$(".placeholder_input").click(function() {
$(this).children(":first").focus();
});