2011-04-08 7 views
3

텍스트 영역의 캐럿 위치를 찾는 jQuery 플러그인이 있습니다. 나는 다음과 같이 텍스트 영역의의 keyup 기능에 구현 : 나는 캐럿 전에, 단어의 단어, 또는 일부를 찾을 걸려텍스트 영역에서 캐럿 전에 단어의 일부를 찾습니다.

$("#editor").keyup(function() { 
    var textbox = $(this); 
    var end = textbox.getSelection().end; 
}); 

. 단어는 모든 유형의 공백으로 구분됩니다.

내 주된 어려움은 줄 바꿈을 다루는 것입니다. 어떻게하면 캐럿의 문자 인덱스가 주어진 캐럿 바로 전에 단어 나 단어의 일부를 찾을 수 있습니까?

답변

8

이 경우 my jQuery textarea plug-in을 사용하는 경우 브라우저가 줄 바꿈을 처리하는 방법에 관계없이 선택 문자 위치는 항상 텍스트 영역의 value 속성에 상대적입니다. 다음과 같이 마지막 단어를 얻을 수 있습니다.

줄 바꿈을 표준화하는 jQuery의 val() 메서드가 아니라 textarea의 value 속성을 사용해야합니다.

$("#editor").keyup(function() { 
    var textbox = $(this); 
    var end = textbox.getSelection().end; 
    var result = /\S+$/.exec(this.value.slice(0, end)); 
    var lastWord = result ? result[0] : null; 
    alert(lastWord); 
}); 
+0

젠장, 내가보기 시작했지만 산만 해지고 이미 해결했습니다! +1은 정확히 내가 한 방식입니다. 그래도 작은 오류가 있습니다.'$ textArea [0]'은'$ ('textarea') [0]'또는'this'로 바꿔야합니다. – andyb

+0

@andyb : 네, 맞습니다 (복사 및 붙여 넣기의 위험). 고침, 고마워. –

+0

감사합니다. 작동합니다! –

관련 문제