【问题标题】:jQuery - Place cursor in input field when link clickedjQuery - 单击链接时将光标放在输入字段中
【发布时间】:2011-12-18 03:35:08
【问题描述】:

我想在单击特定链接后将光标放在输入字段中。我将其用于小型搜索引擎。

想象一个输入字段:[]。然后是一些在输入字段中添加字符串的链接,例如:丹麦、英格兰等。

现在我需要像这样放置光标:“丹麦,[这里]”。

这可能吗?

* 更新 *

我现在正在使用此代码来替换文本,您将如何添加“位置光标”的技巧?

$('#denmark').click(function(){     
   $('#searchBoxBig').val('Denmark, ');
});

【问题讨论】:

  • 您想要多次点击来追加或替换文本吗?
  • 替换文本.. 我已经用我现在使用的文本更新了问题
  • 如果您还想在浏览器的可见部分移动插入符号,请查看此答案:stackoverflow.com/questions/7892902/…
  • 看起来它已经在这样做了?
  • @Al-Mothafar 放轻松,伙计.. 说真的:-D

标签: jquery


【解决方案1】:

是的,捕获锚点上的点击事件会阻止默认操作并专注于该字段。

函数上下文包含已单击的元素,因此您可以计算应用焦点调用的字段。

$(anchorSelector).live("click", function(e) {
   e.preventDefault(); 

   $(fieldSelector).focus();

   return false;
});

【讨论】:

  • 我已经更新了这个问题,你将如何在我当前的代码中添加技巧来替换文本?
  • 这是要走的路!
  • 实际上,随着 Jquery 的新更新,我们应该像这样$(document).on("click","#go_to_comments", function(e) { e.preventDefault(); $("#commentaire").focus() return false; })
【解决方案2】:

您可以使用selectionStartselectionEnd 属性设置光标在输入框中的位置。如果您不想选择任何文本,只需使它们彼此相等即可。

你可以这样做:

var input = $("input");
input[0].selectionStart = input[0].selectionEnd = input.val().length;

【讨论】:

  • 这对我来说不适用于移动 Safari,不得不使用 Nicolas Modrzyk 的答案。
【解决方案3】:
$(":input[name=xxxx]").focus();

啊,你需要光标在所有文本之后吗?看看这里:jQuery Set Cursor Position in Text Area 它对输入而不是文本区域的工作方式相同。

如果您使用其他选择器,这也适用。

【讨论】:

    猜你喜欢
    • 2014-08-12
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多