使用jQuery的focus()输入元素,但光标不会出现

Zso*_*olt 15 html javascript jquery focus cursor

我想在单击div时聚焦输入元素.

我的HTML看起来像这样:

<div class="placeholder_input">
    <input type="text" id="username" maxlength="100" />
    <div class="placeholder_container">
        <div class="placeholder">username</div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我的脚本是:

$("#username").focus(function() {
    $(this).next().hide();
});

$(".placeholder_input").mousedown(function() {              
    $(this).children(":first").focus();
});
Run Code Online (Sandbox Code Playgroud)

当我单击文本框时,占位符文本会正确消失,但闪烁的光标不会显示在文本框中.(我无法在文本框中输入任何文字)

mousedown事件处理程序内部,$(this).children(":first")表达式选择正确的输入元素,因此我不知道为什么focus()调用不起作用.

Dav*_*mas 13

它不适用于该mousedown方法; 但它可以使用mouseup()click()方法:

$(".placeholder_input").mouseup(function() {              
    $(this).children(":first").focus();
});?
Run Code Online (Sandbox Code Playgroud)

JS小提琴演示.

和:

$(".placeholder_input").click(function() {              
    $(this).children(":first").focus();
});?
Run Code Online (Sandbox Code Playgroud)

JS小提琴演示.

参考文献:


ben*_*ael 5

如果你坚持使用mousedown,请将焦点延迟到下一个刻度

$(".placeholder_input").mousedown(function() {              
      var $el =  $(this).children(":first");
      setTimeout(function() {
          $el.focus();
      }, 0);
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/wpnNY/46/