当文本框获得焦点时,将光标设置在长度为14的位置。

8

大家好,我需要将光标设置在一个没有值的文本框上的第14个位置。我知道初始时光标在0位置,但我希望它在第14个位置。


4
我认为它被称为插入符,而不是光标。 - Šime Vidas
3个回答

19

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 是什么?它是文本框的 ID 吗? - ACP
node是DOM实例,但如果您需要使用id进行操作,可以添加额外的“代码行”,它将为您获取DOM实例。 - nemisj
正如DSharma所建议的(撤销了编辑,应该是一条评论):如果您想将光标放在输入文本的开头,请向函数调用添加超时以使其适用于所有浏览器。例如:window.setTimeout(function() { setCursor(node,0);}, 1); - thomaux
1
在node之前的'var'是多余的,因为它已经是一个函数参数。不过这个函数很棒。 - Codesmith

2

0

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

附注:文本框中应该已经有长度大于 14 的字符才能正常工作。


标记文本框将为空,是否有解决方案? - ACP
是的,这是针对输入框和文本区域的。如果你的是富文本框,我就不确定了。对此感到抱歉。 - YOU

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接