js TextArea 선택 영역 처리

2343 단어 TextArea선택 영역
(1)Textarea 의 선택 영역 시작 점 을 가 져 오 거나 선택 되 지 않 았 을 때의 입력 커서 위 치 는 IE 브 라 우 저 가 아 닙 니 다.예 를 들 어 fireforx,chrome,selectionStart 를 지원 하여 선택 영역 시작 점 을 가 져 옵 니 다.IE 브 라 우 저 는 이 속성 을 지원 하지 않 습 니 다.간접 적 으로 TextRange 를 통 해 얻 을 수 있 습 니 다.TextRange 대상 의 compare EndPoints 방법 으로 시작 점 을 비교 할 수 있 습 니 다
 
getStartPos : function( textarea )
{
if ( typeof textarea.selectionStart != 'undefined' )
{ // IE
start = textarea.selectionStart;
}
else
{ // IE
var range = document.selection.createRange();
var range_textarea = document.body.createTextRange();
range_textarea .moveToElementText(textarea);
// start point
for ( var sel_start = 0; range_textarea .compareEndPoints('StartToStart' , range) < 0; sel_start++)
range_textarea .moveStart( 'character', 1);
start = sel_start;
} // else

return start;
}
그러나 주의해 야 할 것 은 chrome 에서 textarea 를 readonley 로 설정 하면 textarea 에 입력 커서 가 나타 나 지 않 고 돌아 오 는 selection Start 와 selection End 는 모두 0.fireforx 아래 가 정상 입 니 다.(2)Textarea 에서 선택 한 영역 을 설정 합 니 다.IE 가 아 닌 브 라 우 저 는 set Selection Range 방법 으로 선택 한 문자 범 위 를 지정 합 니 다.IE 는 지원 하지 않 으 며 TextRange 를 통 해 작 동 합 니 다.여기 서 주의해 야 할 것 은 IE 에서 Textarea 의 선택 구간 의 상대 적 인 위치 문제 입 니 다.아래 코드 가 먼저 moveStart 이 고 moveEnd 는 출발점 과 종점 을 모두 0 으로 설정 합 니 다.collapse 이동 이 효력 이 발생 한 후에 출발점 이 변 하지 않 습 니 다.먼저 moveEnd 이동 구간 의 종점 을 이동 한 다음 에 moveStart 이동 구간 의 출발점 은 출발점 point 를 바 꾸 지 않 기 전에 상대 적 인 위치 가 변 하지 않 고 이해 하기 쉽 습 니 다
 
   /**
* textarea
*/
setSelectRange : function( textarea, start, end )
{
if ( typeof textarea.createTextRange != 'undefined' )// IE
{
var range = textarea.createTextRange();
// 0
range.moveStart( "character", 0)
range.moveEnd( "character", 0);
range.collapse( true); // start
range.moveEnd( "character", end);
range.moveStart( "character", start);
range.select();
} // if
else if ( typeof textarea.setSelectionRange != 'undefined' )
 {
   textarea.setSelectionRange(start, end);
   textarea.focus();
 } // else
   }
선택 한 영역 가 져 오기 및 설정 방법 을 실현 한 후에 다른 텍스트 삽입,교체 의 실현 은 비교적 간단 합 니 다.

좋은 웹페이지 즐겨찾기