어떻게 할 수 있는 커서를 이동의 마지막의 위치를 텍스트 영역에서 Javascript?

StackOverflow https://stackoverflow.com/questions/637287

문제

나는 텍스트 영역과 버튼 형태입니다.Textarea 수 있습니다 이미지 텍스트이다.고 싶으로 커서를 이동하는 마지막에 위치한 텍스트 영역을 때 버튼을 클릭합니다.

이것이 가능한가요?

도움이 되었습니까?

해결책

의"마지막"위치,당신은 당신 말은 텍스트의 끝?

변경하는'.값이'양식의 필드로 이동 커서를 끝으로 모든 브라우저에서 제외 IE.IE 에서 당신은 당신의 손으로 의도적으로 조작하는 선택을 사용하여,비표준 인터페이스:

    if (browserIsIE) {
        var range= element.createTextRange();
        range.collapse(false);
        range.select();
    } else {
        element.focus();
        var v= element.value();
        element.value= '';
        element.value= v;
    }

당신이 커서를 넣어 다시는 장소로 이전에,마지막 시간 텍스트 영역에 초점을 맞추었다?

모든 브라우저에서 제외하고 즉,이것은 이미 일어나 그를 호출하여'요소입니다.focus()';브라우저 기억 마지막 커서/선택의 위치에 따 입력하고 그것을 두고 뒤에 초점입니다.

이것은 매우 까다로운 재현하는 IE.당신을 조사하는 모든 시간이 어디에 있는지 확인 커서가/선정되었다고 기억한 경우 위치에 있었는 요소를 입력한 다음,가치에 대한 특정 요소가 버튼을 누르고 그것을 복원 할 수 있습니다.이 포함한 일부는 정말로 매우 지루한 조작의'문서입니다.선택합니다.createRange()'.

나는 아무것도에 jQuery 는 것이 이 작업을 수행할 수 있도록,하지만 될 수 있는 플러그인이 어딘가에이라도 있나?

다른 팁

XGMZ의 대답은 나에게 가장 좋았습니다. 브라우저에 대해 걱정할 필요가 없습니다.

var html = $("#MyTextArea").val();
$("#MyTextArea").focus().val("").val(html);

그리고 다음에 다음에 저를 위해 쓴 빠른 jQuery 확장 기능이 있습니다.

; (function($) {
    $.fn.focusToEnd = function() {
        return this.each(function() {
            var v = $(this).val();
            $(this).focus().val("").val(v);
        });
    };
})(jQuery);

이렇게 사용하십시오 :

$("#MyTextArea").focusToEnd();

이 작업을 수행할 수도 있습니다:

$(document).ready(function()
{
    var el = $("#myInput").get(0);

    var elemLen = el.value.length;

    el.selectionStart = elemLen;
    el.selectionEnd = elemLen;

    el.focus();
});​

이 코드는 모두 작동 inputtextarea.테스트와 최신 브라우저Firefox23,IE11 크롬 28.

jsFiddle 가능 여기: http://jsfiddle.net/cG9gN/1/

출처: https://stackoverflow.com/a/12654402/114029

당신은 이것을 사용할 수 있습니다 https://github.com/drpheltright/jquery-caret

$('input').caretToEnd();

이것은 내 onclick 또는 기타 이벤트 내부의 Textareas에 사용하는 것이며 Firefox 및 IE 7 & 8에서 잘 작동하는 것 같습니다. 전면 대신 텍스트 끝에 커서를 배치합니다.

this.value = "some text I want to pre-populate";
this.blur();
this.focus();

마우스 초점을 설정하고 커서를 입력 끝으로 이동합니다. 모든 브라우저에서 작동하며 여기에 간단한 논리가 있습니다.

input.focus();
tmpStr = input.val();
input.val('');
input.val(tmpStr);

기본값을 지원하기 위해 @mkaj 확장자를 조금 수정했습니다.

; (function($) {
    $.fn.focusToEnd = function(defaultValue) {
        return this.each(function() {
            var prevValue = $(this).val();
            if (typeof prevValue == undefined || prevValue == "") {
                prevValue = defaultValue;
            }
            $(this).focus().val("").val(prevValue);
        });
    };
})(jQuery);

// See it in action here
$(element).focusToEnd("Cursor will be at my tail...");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top