jQuery Set Cursor Position in Text Area

前端 未结 16 1702
无人共我
无人共我 2020-11-21 11:42

How do you set the cursor position in a text field using jQuery? I\'ve got a text field with content, and I want the users cursor to be positioned at a certain offset when

16条回答
  •  醉梦人生
    2020-11-21 12:10

    I found a solution that works for me:

    $.fn.setCursorPosition = function(position){
        if(this.length == 0) return this;
        return $(this).setSelection(position, position);
    }
    
    $.fn.setSelection = function(selectionStart, selectionEnd) {
        if(this.length == 0) return this;
        var input = this[0];
    
        if (input.createTextRange) {
            var range = input.createTextRange();
            range.collapse(true);
            range.moveEnd('character', selectionEnd);
            range.moveStart('character', selectionStart);
            range.select();
        } else if (input.setSelectionRange) {
            input.focus();
            input.setSelectionRange(selectionStart, selectionEnd);
        }
    
        return this;
    }
    
    $.fn.focusEnd = function(){
        this.setCursorPosition(this.val().length);
                return this;
    }
    

    Now you can move the focus to the end of any element by calling:

    $(element).focusEnd();
    

    Or you specify the position.

    $(element).setCursorPosition(3); // This will focus on the third character.
    

提交回复
热议问题