양식과 텍스트 영역이 있습니다. x 초 후에 자동으로 양식을 제출합니다 ...하지만 자동 제출이 완료되면 커서가 텍스트 영역 밖으로 점프합니다 ... 그래서 이전 위치에서 제출 한 후 커서를 유지할 수 있습니까? 텍 사레 아에?자동 제출 후 커서를 텍스트 영역의 위치에 유지할 수 있습니까?
2
A
답변
2
에서 코드를 제출하면 textarea
에 커서의 현재 위치가 표시됩니다. 당신은 (id
가 textarea
요소의 id 속성이다)이 기능을 수행 할 수 있습니다 (예를 들어 localstorage
에) 어딘가에 값을 저장보다
function getCaretPosition(id) {
var txt = document.getElementById(id);
var startPos = txt.selectionStart;
var endPos = txt.selectionEnd;
return endPos;
}
는, 양식 이후에 커서 위치를 복원 제출 이 기능 : caretPos를 제출하기 전에 저장된 커서 위치입니다
function setCaretPosition(id) {
var txt = document.getElementById(id);
if(txt.createTextRange) {
var range = txt.createTextRange();
range.collapse(true);
range.moveEnd('character', caretPos);
range.moveStart('character', caretPos);
range.select();
return;
}
if(txt.selectionStart) {
txt.focus();
txt.setSelectionRange(caretPos, caretPos);
}
}
. 여기에 간단한 동작 데모가 있습니다. 코드를 보지 않고도 https://jsfiddle.net/p0oc8tjs/2/
2
autofocus 텍스트 영역 특성을 사용하십시오. 예 :
<textarea autofocus></textarea>
이 부울 속성을 사용하면 폼 컨트롤이 가 입력 포커스를 가져야한다고 지정할 수 있습니다 페이지가로드 될 때, 사용자가 다른 컨트롤에 입력하여, 예를 들어 을 무시하지 않는 한. 하나의 양식 연관 요소 하나만이이 속성을 지정할 수 있습니다. 당신은 여전히 sessionStorage을 사용하는 것보다, 마지막 커서 위치를 스크립트를 사용하여 설정하려면
당신은 할 수 있습니다 :
:이 게시물에 대한 답변을$.fn.getCursorPosition = function() {
var el = $(this).get(0);
var pos = 0;
if('selectionStart' in el) {
pos = el.selectionStart;
} else if('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
};
$.fn.selectRange = function(start, end) {
if(end === undefined) {
end = start;
};
return this.each(function() {
if('selectionStart' in this) {
this.selectionStart = start;
this.selectionEnd = end;
} else if(this.setSelectionRange) {
this.setSelectionRange(start, end);
} else if(this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', start);
range.select();
}
});
};
var textarea = $('.remember-cursor');
textarea.on('input click keyup', function(e) {
\t sessionStorage.cursorPosition = textarea.getCursorPosition();
});
$(document).on('ready', function(e) {
textarea.focus().selectRange(sessionStorage.cursorPosition);
});
$('button').on('click', function(e) {
\t $(document).trigger('ready');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea class="remember-cursor">adsfsadfsad</textarea>
<button>Trigger DOM ready</button>
감사합니다
또한 JSFiddle에있다.
여전히 이 올바른 방법입니다. AJAX를 통해 데이터를 게시하고 결과를 수집해야합니다.
관련 문제
- 1. 텍스트 영역의 특정 줄의 특정 위치에 커서를 설정하십시오.
- 2. 제출 후 텍스트 영역의 내용 비우기
- 3. 텍스트 영역의 자동 증가는
- 4. javascript 텍스트 영역의 특정 위치에 텍스트 삽입
- 5. 텍스트 영역의 자동 줄 바꿈
- 6. 텍스트 영역의 자동 완성 기능
- 7. 유지 텍스트 영역의 컨텐츠 나 양식 제출 후 해당 분야에서 텍스트 상자와 텍스트 영역의 컨텐츠를 유지하기 위해 노력하고
- 8. 양식을 제출 한 후 텍스트 영역의 값을 유지하는 방법
- 9. 위치에 따라 텍스트 자동 업데이트
- 10. 특정 영역의 JPanel에서 마우스 커서를 어떻게 재구성 할 수 있습니까?
- 11. jquery는 텍스트 영역의 첫 번째 문자로 커서를 설정합니다.
- 12. 제출 후 앵커로 자동 스크롤
- 13. 텍스트 영역의 콘텐츠를 어떻게 보낼 수 있습니까?
- 14. 텍스트 영역의 가치를 어떻게 얻을 수 있습니까?
- 15. jquery를 사용하여 텍스트 영역의 시작 부분에 커서를 설정하십시오.
- 16. 제출 후 제출 버튼의 텍스트 변경
- 17. C/C++ : ENTER를 누른 후 커서를 현재 줄에 유지할 수 있습니까?
- 18. 어떻게 자바 스크립트에서 텍스트 영역의 마지막 위치로 커서를 이동할 수 있습니까?
- 19. CKEditor의 특정 위치에 커서를 설정하는 방법은 무엇입니까?
- 20. 제출 후 입력란에 사용자 입력 텍스트 유지
- 21. 상단의 글꼴 커서를 어떻게 얻을 수 있습니까?
- 22. 텍스트 영역의 데이터를 텍스트 파일로 저장할 수 있습니까?
- 23. jQuery를 사용하여 텍스트 영역의 커서 위치에 툴팁을 작성하십시오.
- 24. Javascript 이벤트를 사용하여 텍스트 영역의 행 수를 늘릴 수 있습니까?
- 25. 자동 양식 제출 후 브라우저 내용 검색
- 26. 루프를 통과 한 후 Iterator의 커서를 첫 번째 항목의 위치에 놓을 수 있습니까?
- 27. 제출 후 일반 텍스트 입력
- 28. 텍스트 영역의 현재 캐럿 위치에 텍스트를 삽입하는 방법
- 29. 제출 후 텍스트 필드에 텍스트 유지
- 30. 속성은 자동 렌더링 된 객체를 유지할 수 있습니까? 내가 이렇게하면
은별로 말할 수 없습니다. 하나. 제출 후'.focus()'를 텍스트 영역에 넣으려고 할 수있다. –
작동하지만 마우스를 한 번 클릭하면 쓸 수 있습니다 ... 마우스를 한 번 클릭하지 않고도 아무 것도 쓰지 않으면 커서가 mouse @ telex-wap에서 한 번 클릭하지 않고 textarea에 표시되지 않기 때문에 – code