在文本框的焦点上设置光标长度为 14

Posted

技术标签:

【中文标题】在文本框的焦点上设置光标长度为 14【英文标题】:Set cursor at a length of 14 onfocus of a textbox 【发布时间】:2010-12-24 08:19:39 【问题描述】:

大家好, 我想在一个没有值的文本框上将光标设置在长度为 14 的位置。我知道最初光标将在 0 我希望它在 14

【问题讨论】:

我相信它被称为插入符号,而不是光标。 【参考方案1】:

IE 在设置光标位置时使用了与 Firefox、Opera 和 Chrome 不同的方法。最好制作一个辅助函数,它会为您完成。我用这个来满足自己的需要。

function setCursor(node,pos)

    node = (typeof node == "string" || node instanceof String) ? document.getElementById(node) : node;

    if(!node)
        return false;
    else if(node.createTextRange)
        var textRange = node.createTextRange();
        textRange.collapse(true);
        textRange.moveEnd(pos);
        textRange.moveStart(pos);
        textRange.select();
        return true;
    else if(node.setSelectionRange)
        node.setSelectionRange(pos,pos);
        return true;
    

    return false;

最后一件事是从您的 onfocus 处理程序中调用它。

祝你好运

【讨论】:

海节点是什么是textboxId node 是 DOM 实例,但如果您需要使用 id,您可以添加额外的“代码行”,它将为您获取 DOM 实例。 正如 DSharma 建议的那样(回滚编辑,应该是评论):为了使其适用于所有浏览器,如果要将光标放在开头,请在函数调用中添加超时的输入文本。例如:window.setTimeout(function() setCursor(node,0);, 1); node 之前的 'var' 是多余的,因为它已经是一个函数参数。不过功能很棒。【参考方案2】:

moveStart 和 moveEnd 方法需要 2 个参数。 第一个参数是一个字符串(字符、单词、句子或文本编辑器)。 第二个参数是一个整数,表示要移动的单位数。 http://msdn.microsoft.com/en-us/library/ie/ms536623%28v=vs.85%29.aspx

【讨论】:

【参考方案3】:

$("#textbox").selectionStart=14 可能适用于 Firefox、Opera、Chrome,但不确定是否适用于 IE

PS:文本框中应该有长度为 14 > 的字符才能正常工作。

【讨论】:

标记文本框为空是否有解决办法 是的,它用于输入框和文本区域,如果你的是富文本框,那我不确定。对此感到抱歉。

以上是关于在文本框的焦点上设置光标长度为 14的主要内容,如果未能解决你的问题,请参考以下文章

如何在不丢失setfocus的情况下将光标设置到文本框的末尾?

将插入符号/光标位置设置为字符串值 WPF 文本框的末尾

VBS使文本框的光标位于所有字符后

js手动控制输入框的光标位置

vue中如何设置文本框的值不超过20个字

微信小程序6位支付密码输入框