어떻게 할 수 있는 커서를 이동의 마지막의 위치를 텍스트 영역에서 Javascript?
-
10-07-2019 - |
문제
나는 텍스트 영역과 버튼 형태입니다.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();
});
이 코드는 모두 작동 input
고 textarea
.테스트와 최신 브라우저Firefox23,IE11 크롬 28.
jsFiddle
가능 여기: http://jsfiddle.net/cG9gN/1/
당신은 이것을 사용할 수 있습니다 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...");