【问题标题】:Highlight string search string高亮字符串搜索字符串
【发布时间】:2011-09-17 16:16:41
【问题描述】:

我正在使用下面的代码在 textarea 中的文本中搜索在 textinput 中输入的字符串。我试图在搜索后突出显示 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>

【问题讨论】:

    标签: apache-flex actionscript-3 search textrange


    【解决方案1】:

    你不能只根据搜索字符串的长度来计算吗?

    修改后的代码如下:

    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>
    

    【讨论】:

    • 我重新打开了它,因为上面的代码使用跟踪,它返回开始和结束整数,但实际字符串没有突出显示。我错过了什么?
    • 我不明白“与跟踪一起工作”是什么意思。能否提供完整的可运行示例?
    • 如果可以提供可运行的样本;我将其复制并粘贴到我的代码编辑器中并查看;但只是添加一个跟踪语句对我没有帮助。
    • 跟踪未定义的原因是因为 selectRange() 没有返回任何内容。 (help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/…)。返回类型为 void。 textArea 上的高亮不可见的原因是组件没有焦点。解决方案是在您的搜索按钮处理程序中赋予 textArea 焦点。我将更新我的答案以包含代码。将来,我建议您在问题中指定您正在处理 Flex 移动项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 2016-11-30
    • 1970-01-01
    • 2019-10-06
    相关资源
    最近更新 更多