Javascript 将光标按指定长度放置在文本框中

Javascript 将光标按指定长度放置在文本框中,javascript,jquery,Javascript,Jquery,可能重复: 我有一个代码,它将焦点放在文本框中选择特定长度的子字符串上。我想放置光标,而不是选择整个字符串。代码如下 代码的HTML部分 您可以定义setCursor函数: function setCursor(node,pos){ var node = (typeof node == "string" || node instanceof String) ? document.getElementById(node) : node; if(!node) r

可能重复:

我有一个代码,它将焦点放在文本框中选择特定长度的子字符串上。我想放置光标,而不是选择整个字符串。代码如下

代码的HTML部分


您可以定义setCursor函数:

function setCursor(node,pos){

    var 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;
}
在脚本中使用:

field.focus(function(){
   var done = setCursor(message, 3);
   // you can check the done boolean if you want ...
});

我根据来自的答案创建了一个简单的jQuery插件函数


演示开始。

看到@My_Boon的想法,我修改了自己的代码。刚刚改变了两个参数,这里是新的答案。我刚换了衣服

else if( field.setSelectionRange ) {
        field.setSelectionRange(end, end);
    } else if( field.selectionStart ) {
        field.selectionStart = end;
        field.selectionEnd = end;
    }

field.setSelectionRange(end, end); this line was `field.setSelectionRange(start, end);`

我已经创建了类似的解决方案,但该解决方案添加了一个选择部分,其中文本标记为蓝色,并且如果您键入这些字符串,将替换这些字符串。我正在寻找一种解决方案,使光标在文本的特定位置闪烁。您的代码已经很好了。您只需更改createSelectionmessage,0,5;创建SelectionMessage,5,5;伙计,你刚刚从nemisj的答案中复制了这个代码!这就是我提到来源的原因…好吧,你改了。谢谢但正如@Shishir在上面的评论中指出的,这个解决方案不符合他的需要。
field.focus(function(){
   var done = setCursor(message, 3);
   // you can check the done boolean if you want ...
});
$.fn.setCursorPos = function(position) {
    return this.each(function() {
        var node = this;

        node.focus();

        if (node.setSelectionRange) {
            node.setSelectionRange(position, position);
        } else if (node.createTextRange) {
            var textRange = node.createTextRange();
            textRange.collapse(true);
            textRange.move('character', position);
            textRange.select();
        }
        node.selectionStart = position;
    });
};
else if( field.setSelectionRange ) {
        field.setSelectionRange(end, end);
    } else if( field.selectionStart ) {
        field.selectionStart = end;
        field.selectionEnd = end;
    }

field.setSelectionRange(end, end); this line was `field.setSelectionRange(start, end);`