2009-07-02 6 views
0

私はテキスト入力ボックスを持っています。 numberValidatorを使用して各ボックスの検証が行われます。 問題は、アラートボックスを使用してエラーが発生したかどうかを表示することです。テキスト入力エラー/検証とフレックスの以前の正しい値を復元

フローチャート::

1>値をテキストボックスに挿入します。 2> NumberValidatorは、 "trigger = change"の入力を検証します。 3>エラーの場合、警告メッセージが表示されます。ユーザーはOKをクリックしてフォームに戻ります。 4>フォーカスをTextBoxに戻します。 5>しかし、アラートボックスは、テキスト入力値を空白/ヌルにします。すなわち、ユーザによって入力された以前のエラー値とデフォルトの正しい値の両方が表示されない。

目標:テキストボックスに入力した最新の正しい値を表示します。他のデフォルト値ではなく、ユーザーが入力した最新の正しい値です。

誰でも助けることができますか?

答えて

0

完全な回答です。私は、単一の文字が火テキスト入力とfocusIn()およびストアどんなテキスト値のイベント

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
       layout="absolute"> 
    <mx:Script> 
     <![CDATA[ 
      import mx.controls.Alert 

      // set last correct value to a default 
      private var lastCorrectValue:String="411" 

      function handleInvalid(event:Event) 
      { 
       Alert.show("invalid"); 
       textInput.text=lastCorrectValue 
      } 

      function handleValid() 
      { 
       Alert.show('Validation Succeeded!') 
       lastCorrectValue=textInput.text 
      } 
     ]]> 
    </mx:Script> 
    <mx:TextInput id="textInput" 
        text="{lastCorrectValue}"/> 
    <!-- Use the enter event of the text box to do validation. The change event fires after a single character--> 
    <mx:NumberValidator source="{textInput}" 
         property="text" 
         integerError="Enter Integer value" 
         domain="int" 
         trigger="{textInput}" 
         triggerEvent="enter" 
         invalid="handleInvalid(event)" 
         valid="handleValid();"/> 
</mx:Application> 
+0

triggerEvent = "enter"は機能しません。事実、変更イベントが機能します。 trigger = enterが指定されている場合、検証は行われません。 – user120118

0

最新の正解を変数に格納し、警告のクリック/クローズハンドラで値を保存したvarに置き換える必要があります。ここ

は、アラートイベントを受け取るの例です。

<?xml version="1.0"?> 
<!-- controls\alert\AlertEvent.mxml --> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 

    <mx:Script> 
     <![CDATA[ 
      import mx.controls.Alert; 
      import mx.events.CloseEvent; 

      private var lastKnownCorrectAnswer:String = "Some Answer"; 

      private function alertListener(eventObj:CloseEvent):void { 
       // Check to see if the OK button was pressed. 
       if (eventObj.detail==Alert.OK) { 
        myText.text = lastKnownCorrectAnswer; 
       } 
      } 
     ]]> 
    </mx:Script> 

    <mx:TextInput id="myAnswer" 
     width="150" 
     text="" /> 
    <mx:Button id="myButton" 
     label="Copy Text" 
     click='Alert.show("Copy Text?", "Alert", 
      Alert.OK | Alert.CANCEL, this, 
      alertListener, null, Alert.OK);'/> 
</mx:Application> 

あなたはそこにあなたの検証ロジックを追加する必要がありますが、あなたのアイデアを得ます。上記はAlert docsのものです。

+0

Ok ...私は考えています....しかし、私はlastKnownCorrectAnswerをどのように追跡することができますか? – user120118

+0

私はその変数を意味します。 – user120118

+0

ユーザーが正しい答えを入力すると、その変数に置きます。コンポーネントを初期化するときは、その変数をデフォルトに設定します(正解の場合)。あなたの特定のコンポーネントを見ることなく、より正確な答えを出すのは難しいでしょう。編集してコードを提供したい場合、私はあなたを手伝ってくれるでしょう。 –

0

を入力した後、「変更」イベントが発生するので、検証を行うために、テキストボックスのイベントを「入力」使用しました変数の中で。 (それはあなたの最後の正解でしょう)。検証後に入力ボックスのテキストをこの値にリセットしてください。