【问题标题】:jQuery .focus() is highlighting all pre-filled textjQuery .focus() 突出显示所有预填充的文本
【发布时间】:2012-11-14 00:47:33
【问题描述】:

HTML

<input id="formloginusername" type="text" name="username" placeholder="Username" value="Pre-filled-from-database"></input>

JS:

$(document).ready(function() {
    $("#formloginusername").focus();
});

问题:

“Pre-fill-from-database”文本被突出显示。我只希望光标在字段中显示,就好像用户在填充文本后单击它一样。

谢谢!

【问题讨论】:

  • 这将是浏览器的默认行为。
  • 我同意adeno,除此之外,您不需要像这样在输入上放置关闭标签... 而是像这样关闭输入

标签: jquery focus highlight


【解决方案1】:

这是一个绝妙的小技巧……

$(document).ready(function() {
    var $field = $("#formloginusername"),
        oldVal = $field.val();
    $field.focus().val('').val(oldVal);
});

演示:http://jsfiddle.net/X7Y8S/

【讨论】:

  • 这是一个很好的例子,谢谢。问题是:所以现在您转到您的页面并且它已经聚焦,但是作为用户说您开始输入:它不会清除文本,它只是添加它。即您的价值是“在这里搜索!”你输入“大学数学书”,它会是“在这里搜索!大学数学书”。如何避免这种情况?编辑: $("input.search-input-header")[0].reset();工作正常,但只有当你点击。您如何设置焦点并且当您开始键入时它会清除?
  • @DavidPardy - 如果您不担心旧版浏览器,我相信您正在描述 placeholder 属性的默认行为。 &lt;input type="text" placeholder="search here!" /&gt;
  • @DavidPardy - 查看这个 JSFiddle (jsfiddle.net/X7Y8S/6) - 浏览器的行为可能不同,但请在 Chrome 上查看。我想这就是你所追求的——你能确认一下吗?
  • 老兄,太棒了。如果我表现得无知,我很抱歉,我以前从未听说过这种事情的占位符。谢谢!
  • @DavidPardy - 不用担心。没有人知道一切,问当然没有羞耻。
【解决方案2】:

这样就可以了:

$('#field').focus().val($("#field").val());

【讨论】:

    【解决方案3】:

    Hopstream,我使用您的方法在 Chrome 中发现光标位于文本末尾。 我需要一种方法让光标集中在字段的开头而不突出显示文本。 这对我有用:

    $('#ElementID').each(function () { $(this).focus(); this.selectionEnd = this.selectionStart; });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 2011-12-29
      相关资源
      最近更新 更多