2011-07-21 5 views
0

私は、focusOutイベントにはいくつかのフィールドと1つのテキストフィールドを持つフレックスアプリがあります。TextInputのFlex focusOutイベントとポップアップでフォーカスが削除されませんか?

<mx:FormItem label="Last" x="226" y="1"> 
    <s:TextInput id="lastNameClientTextInput" text="@{_currentEditClient.lastName}" change="textFieldChangeCapitalize(event)" focusOut="lastNameClientTextInput_focusOutHandler(event)"/> 
</mx:FormItem> 

予想したように、Iタブをか、それは私の「lastNameClientTextInput_focusOutHandler」メソッドを実行した値を入力した後、フィールドの外をクリックしました単純にポップ・アップ新しいウィンドウ:

protected function lastNameClientTextInput_focusOutHandler(event:FocusEvent):void 
     { 

       clientSearchPopUp = new ClientListWindow(); 
       PopUpManager.addPopUp(clientSearchPopUp, this, true); 
       PopUpManager.centerPopUp(clientSearchPopUp);      

     } 

ウィンドウがそうすることを「PopUpManager.removePopUpを(この);」ユーザーが閉じるボタンをクリックしたとき。

しかし、問題は、ウィンドウが閉じてフォーカスがlastNameClientTextInputに戻ったときです。私はフィールドからクリックしたりタブを外したりできません!

私がタブアウトすると、最初にibeamカーソルがタブ名(アドレス)の次のフィールドに移動してから、ウィンドウがポップアップするのが見えます。ウィンドウを閉じると、姓のフィールドに戻り、値が強調表示されます。

focusOutイベントを検証するために何かを行う必要があるかのようですか?

+0

私は不思議なことに、なぜあなたはテキスト入力に焦点を当ててポップアップをしたのですか?非常に奇妙で非標準的なUXの動作です。 –

+0

人は名字を入力し、新しいクライアントを追加し、タブを押す(またはクリックする)と、アプリは重複チェックを行い、可能な重複のリストをポップアップしています。それは奇妙なものですが、それは顧客/クライアントの名前の重複チェック機能を持っているほとんどのビジネスアプリケーションで私がいつも見てきたことです。ユーザーが最初に手動で検索するのではなく、特に珍しい姓の場合は、クリック数/ステップ数を節約できる可能性があります。 –

+0

ポップアップの代わりに、代わりにドロップダウンリストがありますか?検索完了ボックスのように? (グーグルだと思うが、代わりにあなたに可能な名前を与える)。そのような場合は、ポップアップが不要で、 'onFocusOut'を確認する必要はありません。あなたは '変更'にそれを行う必要があります。 –

答えて

0

focusOutではなく、valueCommitを試してみるとよいでしょう。また、ポップアップが削除されるのを聞くことができ、手動でフォーカスを設定することもできます。

HTH;

エイミー

+0

試しましたが、changeイベントと同じように動作します。つまり、入力するすべての文字がvalueCommitイベントをスローすることを意味します。それでも、同じことをしているようです。ポップアップが表示されます。ポップアップが閉じると、フォーカスが最後のフィールドに戻り、強調表示されます。私は今、手動でフォーカスを次のフィールド(アドレス)に設定できると思うが、ハックのようだ。 –

0

後期私は知っているが、Flexのコンポーネントがアクティブであった最後の時間からフォーカスを再開するFocusManager.lastFocusプロパティを参照することができます。ポップアップをトリガーするときは、

(focusManager as FocusManager).mx_internal::lastFocus = null;