2011-09-17 43 views
0

我正在使用下面的代码来搜索文本输入中输入的字符串的textarea中的文本。我正在尝试在textarea搜索后突出显示字符串。我假设这样做的方式是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

谢谢:)。这太好了 – RapsFan1981

+0

我重新打开了这个,因为上面的代码使用跟踪,它返回开始和结束整数,但实际的字符串不会突出显示。我错过了什么? – RapsFan1981

+0

我不明白“跟踪工作”的含义。你能提供一个完整的可运行样本吗? – JeffryHouser