2010-07-03 4 views
0

JavaScript가있는 텍스트 영역에서 커서 위치가 정의 된 행의 시작 위치에 있는지 확인하는 방법은 무엇입니까?커서 위치가 텍스트 영역의 정의 된 행의 시작에 있는지 확인하십시오.

+0

가능한 복제본 : http://stackoverflow.com/questions/263743/how-to-get-cursor-position-in-textarea –

+0

Nope;) 그는 텍스트 영역에서 커서 위치를 가져오고 싶습니다. 커서가 정의 된 행 (예 : 3)에서 시작합니다. – lam3r4370

답변

1

: 당신은 텍스트의 커서 위치의 오프셋을 얻을 수있는

Caret position in textarea, in characters from the start

. 그런 다음 오프셋 앞에 오는 <textarea> 텍스트에있는 개행 문자를 계산하여 현재 어느 행이 있는지 파악할 수 있습니다. 오프셋이 개행 문자 바로 뒤에 있으면 행의 시작 부분에 있습니다. 이 두 가지 방법을 사용하면 특정 줄의 시작 부분에 있는지 파악할 수 있습니다. 예 :

var offset = getCaret('mytextarea'); 
var text = document.getElementById('mytextarea').value; 
var line_number = 1; 
var i; 

for (i = 0; i < offset; i++) { 
    if (text[i] == '\n') { 
     line_number++; 
    } 
} 

if (!i || text[i-1] == '\n') { 
    // You're at the start of a line 
} 

참고 : IE는 캐리지 리턴 (\ r)도 사용할 수 있으므로이를 고려해야 할 수 있습니다.

+0

어떤 행 (줄)이 커서인지를 결정하는 코드가 있지만이 행의 시작 부분에 있는지 확인하는 방법은 무엇입니까? – lam3r4370

+0

내 대답 업데이트 – tomit

+0

'soft-wrap'이있는 경우 감싸 진 긴 줄에는 작동하지 않습니다. (나는이 문제에 대한 좋은 해결책을 찾고 있지만 아직까지는 운이 없다.) –

0

다음 이벤트 중 하나 또는 조합을 사용할 수 있습니다. onchange, onkeyup, onkeydown, onkeypress.

전체적인 목표를 조금 더 자세하게 설명하십시오. 여기에 제공된 답을 사용

+0

입력 컨트롤이 포커스를 잃을 때만 onchange가 실행됩니다. 초점을 얻은 후 값이 수정되었습니다. http://www.w3.org/TR/REC-html40/interact/scripts.html#adef-onchange –

+0

OP에 추가 사양이 없으면 옵션을 제공하고있었습니다. 어떤 행사가 도움이 될지 누가 알 수 있습니까? –

+0

좋아, 내가 onkeydown 사용할 수 있지만 어떻게 확인합니까? – lam3r4370

관련 문제