2009-07-02 5 views
0

텍스트 입력란이 있습니다. numberValidator를 사용하여 각 상자에 대한 유효성 검사가 있습니다. 이제 경고 상자를 사용하여 오류가 발생했는지 보여주는 것입니다.텍스트 입력 오류/유효성 검사 및 이전 올바른 값을 복원합니다

흐름도 ::

1> 텍스트 상자에 값을 삽입하십시오. 2> NumberValidator는 "trigger = change"에 대한 입력의 유효성을 검사합니다. 3> 오류가 발생하면 경고 메시지가 표시됩니다. 사용자가 확인을 클릭하면 양식으로 돌아갑니다. 4> 포커스를 TextBox로 다시 설정합니다. 5> 그러나 경고 상자는 텍스트 입력 값을 공백/null로 만듭니다. 즉, 사용자가 입력 한 이전 오류 값과 기본 올바른 값이 모두 표시되지 않습니다.

목표 : 텍스트 상자에 입력 한 가장 최근의 올바른 값을 표시합니다. 다른 기본값은 아니지만 사용자가 입력 한 가장 최근의 올바른 값입니다.

아무도 도와 줄 수 있습니까 ??

답변

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"가 작동하지 않습니다. 사실, change 이벤트가 작동합니다. 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

좋아요 ... 아이디어가 생깁니다 ....하지만 lastKnownCorrectAnswer를 어떻게 추적 할 수 있습니까? – user120118

+0

그 변수를 의미합니다. – user120118

+0

사용자가 정답을 입력하면 해당 변수에 입력하게됩니다. 구성 요소를 초기화 할 때 해당 변수를 기본값으로 설정합니다 (정답이라고 가정). 특정 구성 요소를 보지 않으면보다 정확한 답변을 제공하기가 어려울 수 있습니다. 편집하고 코드를 제공하려는 경우 내가 도와 줄 것입니다. –

0

를 입력하기 때문에 나는 확인을 할 텍스트 상자의 "입력"이벤트를 사용 변수에. (그것은 당신의 마지막 정답이 될 것입니다). 유효성 검사 후 inputbox 텍스트를이 값으로 재설정하십시오. 희망 사항 :

관련 문제