【问题标题】:How can I make a function to select all in a Flex textbox?如何在 Flex 文本框中创建一个全选功能?
【发布时间】:2010-12-01 00:43:28
【问题描述】:

我正在尝试在 Flex 中创建一个简单的“智能”文本框组件,并且我想要一个可以在组件外部使用的函数来强制自己选择其中的所有文本。

在我的SmartTextbox.mxml

public function selectAll():void
{
    this.setSelection(0, this.length);
}

当文本框获得焦点时,我也使用此功能,如下所示:

private function onTextInput_focusIn(event:Event):void
{
        selectAll();
}

后一个,在 focusIn 事件上,正在工作。 但是,如果我尝试从外部调用该函数,例如:

在另一个组件中,texInputQuickSearch 是 SmartTextBox 组件。

if(searchModule.currentState == SearchModule.STATE_SEARCH)
{
    doSearch();
    searchModule.textInputQuickSearch.selectAll();              
}

它不会重新选择文本。

为什么会这样?

【问题讨论】:

  • 使用调试器,或者通过放置日志,您是否看到 selectAll() 是否在 texInputQuickSearch 上下文中执行?
  • doSearch() 中是否抛出异常?
  • 您是否有机会将可选属性设置为 false?
  • 使用调试器我可以看到 selectAll 已执行,但在执行后直接 selectionBeginIndex 和 selectionEndIndex 仍然与之前相同 = 没有选择。当我在 focusIn 事件上执行 selectAll 时,它会起作用

标签: apache-flex actionscript-3 components


【解决方案1】:

你需要做类似的事情......

AS3:

import mx.core.UITextField;

private function initializeHandler( event:Event ):void{

  var ti:TextInput = event.currentTarget as TextInput;
  var tf:UITextField = ti.mx_internal::getTextField();

  tf.alwaysShowSelection = true;

  ti.setFocus();
}


private function setSelection( start:int, end:int ):void{

  txtName.selectionBeginIndex = start;
  txtName.selectionEndIndex = end;

}

MXML:

<mx:TextInput id="txtName"
  initialize="initializeHandler( event );"/>

【讨论】:

  • 成功了! :) 谢谢,介意解释它为什么起作用吗?我不熟悉 mx_internal 和 UITextField 组件。
【解决方案2】:

我的第一个猜测是,您的条件语句没有在您期望的时候评估为 TRUE。也许这是您的问题中的错字,但您有:

带有小写“s”的searchModule与带有大写“S”的SearchModule相比

如果您没有使用 Flex Builder 或其他调试环境,我会在真正的代码块中使用跟踪或其他东西来测试它(可以从 FLASH IDE 内部运行):

if(searchModule.currentState == SearchModule.STATE_SEARCH) {
    trace("made it here...I'm in");
    doSearch();
    searchModule.textInputQuickSearch.selectAll();
    trace("you should have seen it select!");
}

验证两个输出都打印。如果是这样,您至少知道 doSearch() 没有卡住。

【讨论】:

  • 我使用 SearchModule.STATE_SEARCH 因为它是一个静态的状态名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 2022-09-30
  • 1970-01-01
  • 2011-03-08
相关资源
最近更新 更多