2011-09-17 4 views
0

나는 아래 코드를 사용하여 텍스트 영역의 텍스트를 검색하여 textinput에 입력 된 문자열을 찾습니다. 내가 검색 한 후에 텍스트 영역의 문자열을 강조 표시하려고합니다. 이 방법은 selectRange()입니다. selectRange()의 두 번째 매개 변수에 endIndex를 찾는 방법을 모르겠습니다. 아래는 내가 가진 무엇 :강조 문자열 검색 문자열

protected function searchBtn_clickHandler(event:MouseEvent):void 
{ 
    text = mainTextField.text; 
    search_Str = searchTxt.text; 

    var search_result:int = text.search(search_Str); 
    trace(search_result); 

편집

<?xml version="1.0" encoding="utf-8"?> 
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 
    <s:titleContent> 
     <s:TextInput id="searchTxt"/> 
     <s:Button label="Button" click="searchBtn_clickHandler(event)"/> 
    </s:titleContent> 
    <s:TextArea id="mainTextField" x="33" y="35" width="544" height="444"/> 
    <fx:Script> 
     <![CDATA[ 
      public var text:String; 
      public var search_Str:String; 

      protected function searchBtn_clickHandler(event:MouseEvent):void 
     { 
      text = mainTextField.text; 
      search_Str = searchTxt.text; 

      var search_result:int = text.search(search_Str); 
      trace(search_result); // Traces correct int values 
      trace(mainTextField.selectRange(search_result,search_result+search_Str.length)); // Traces "undefined" 
     } 
     ]]> 
    </fx:Script> 
</s:View> 

답변

2

방금 ​​검색 문자열의 길이에 기반을 계산할 수 있습니까?

수정 된 코드는 다음과 같다 : 원래 포스터의 코드 업데이트에 대한 응답으로

protected function searchBtn_clickHandler(event:MouseEvent):void 
{ 
    text = mainTextField.text; 
    search_Str = searchTxt.text; 

    var search_result:int = text.search(search_Str); 
    trace(search_result); 
    mainTextField.selectRange(search_result,search_result+search_Str.length); 
} 

업데이트; 나는 앞서 가서 테스트를했다. TextAre는 포커스가없는 경우 선택한 항목을 표시하지 않습니다. 따라서 선택한 범위를 강조 표시하는 솔루션은 버튼을 클릭 한 후에 textArea에 포커스를 설정하는 것입니다. 다음은이를 증명하는 코드입니다.

<?xml version="1.0" encoding="utf-8"?> 
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 

    <s:titleContent> 
     <s:TextInput id="searchTxt" text="Quick" /> 
     <s:Button label="Button" click="searchBtn_clickHandler(event)"/> 
    </s:titleContent> 
    <s:TextArea id="mainTextField" x="33" y="35" width="544" height="444" text="The Quick Brown Fox Jumped Over The Lazy Dogs"/> 
    <fx:Script> 
     <![CDATA[ 
      public var text:String; 
      public var search_Str:String; 

      protected function searchBtn_clickHandler(event:MouseEvent):void 
      { 
       mainTextField.setFocus(); 
       text = mainTextField.text; 
       search_Str = searchTxt.text; 

       var search_result:int = text.search(search_Str); 
       trace(search_result); // Traces correct int values 
       trace(search_result+search_Str.length); 
//    trace(mainTextField.selectRange(search_result,search_result+search_Str.length)); // Traces "undefined" 
       mainTextField.selectRange(search_result,search_result+search_Str.length) 
      } 
     ]]> 
    </fx:Script> 


</s:View> 
+0

감사합니다. 위 코드는 트레이스에서 작동하기 때문에 다시 열었습니다. 시작 및 끝 int를 반환하지만 실제 문자열은 강조 표시되지 않기 때문에 다시 열었습니다. – RapsFan1981

+0

내가 뭘 놓치고 있니? – RapsFan1981

+0

"추적과 함께 작동"이란 의미를 이해하지 못합니다. 전체 실행 가능한 샘플을 제공 할 수 있습니까? – JeffryHouser