2013-05-20 83 views
-1

我试图在使用事件keyDown的富文本编辑器中添加Tab键功能。只需要清楚,在标签键上,我需要将控件保留在前面带有'\ t'空格的同一个文本框中,而不是跳到下一个对象。我尝试的下面的代码完全适用于textArea,但不适用于RichTextEditor。我错过了什么吗?在富文本编辑器中添加Tab键功能(Flex 3)

<mx:RichTextEditor width="90%" 
        height="274" 
        id="richTextArea" 
        htmlText="{chapterContent}" keyDown="onTabPress(event);"/> 

键盘tab键然后在该脚本级进行处理,如图所示。

private function onTabPress(eventkey:KeyboardEvent):void 
{ 
    switch(eventkey.keyCode) 
    { 
     case Keyboard.TAB: 
      var indexBegin:int = eventkey.currentTarget.selectionBeginIndex; 
      var range:TextRange = new TextRange(eventkey.currentTarget as UIComponent,false,indexBegin,indexBegin); 
      range.text = "\t"; 
      var indexNext:int = eventkey.currentTarget.selectionBeginIndex+range.text.length; 
      eventkey.currentTarget.setSelection(indexNext, indexNext); 
      focusManager.moveFocus(FocusRequestDirection.BACKWARD); 
      break; 
    } 
} 

感谢您的帮助。

+0

我知道RTE由一个控制和文本区域。我如何确保keyDown侦听器仅附加到textArea。道歉,如果我听起来业余。 – shark1608

+0

你尝试过'eventKey.stopImmediatePropagation()'吗? – duTr

回答

0

发生了同样的问题。它对我来说很有效,因为使用了KEY_UP事件而不是KEY_DOWN事件。

而不是将焦点回来的,我直接将焦点设置到地将RichTextEditor的textarea的:

<mx:RichTextEditor id="rte_txt" /> 
rte_txt.textArea.setFocus(); 

但使用对焦经理也应该工作。

0

尝试将'\ t'字符插入RichTextEditor似乎存在一些问题...但是,RichTextEditor事件目标具有公开的textArea组件。您的代码在textArea中效果很好,因此您可以稍微更改目标。

这是一个轻微的编辑,但下面的代码工作对我来说:

private function onTabPressed(event:KeyboardEvent):void { 
     switch(event.keyCode) { 
      case Keyboard.TAB : 
       var indexBegin:int = event.currentTarget.textArea.selectionBeginIndex; 

       var range:TextRange = new TextRange(event.currentTarget.textArea as UIComponent, false, indexBegin, indexBegin); 
       range.text = "\t"; 

       var indexNext:int = event.currentTarget.textArea.selectionBeginIndex + range.text.length; 
       event.currentTarget.textArea.setSelection(indexNext, indexNext); 
       focusManager.moveFocus(FocusRequestDirection.BACKWARD); 
       break; 
     } 
    } 

有了:

<mx:RichTextEditor width="90%" 
        height="274" 
        id="richTextArea" 
        htmlText="{chapterContent}" 
        keyDown="onTabPress(event);"/>