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

IT技术 javascript html textbox cursor-position onfocus
2021-02-15 21:30:42

伙计们,我想将光标设置在没有值的文本框上长度为 14 的位置。我知道最初光标将在 0 我希望它在 14

3个回答

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 处理程序中调用它。

祝你好运

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

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

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

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

标记文本框将为空有什么解决方案
2021-04-18 21:30:42
是的,它用于输入框和文本区域,如果您的是富文本框,那么我不确定。对于那个很抱歉。
2021-05-02 21:30:42