2013-05-20 82 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);"/>