2017-02-24 4 views
1

숫자 스테퍼에 최대 및 최소를 설정하면 해당 범위 밖의 숫자를 입력 할 수 있습니다. 그러나 그것보다 큰 숫자를 입력하면 자동으로 최대 값을받습니다. 이 경우 오류를 표시하지만 최대 값과 최소값을 계속 설정하려면 어떻게해야합니까?숫자 스테퍼의 값이 범위를 벗어날 때 오류 표시

답변

2

사용자가 가의 text input에서 키 또는 focus out를 Enter를 누르 (10) NumericStepper 당신이 입력 한 번호가 아래와 같은 범위 내에 있는지 확인하는 로직을 넣을 수 있습니다 :

<?xml version="1.0"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark"> 
<fx:Script><![CDATA[ 
    import mx.controls.Alert; 

    private var isProcessRequiredOnFocusOut:Boolean = true; 

    private function addEventListeners():void { 
     numericStepper.addEventListener(KeyboardEvent.KEY_DOWN, checkRange, true); 
     numericStepper.addEventListener(FocusEvent.FOCUS_OUT, checkRange, true); 
    } 

    private function checkRange(event:Event):void { 
     if (event is KeyboardEvent && (event as KeyboardEvent).keyCode == Keyboard.ENTER) { 
      isProcessRequiredOnFocusOut = false; 
      processRangeCheck(); 
     } 
     else if (event is FocusEvent && (event as FocusEvent).type == FocusEvent.FOCUS_OUT 
       && isProcessRequiredOnFocusOut) { 
      processRangeCheck(); 
     } 
    } 

    private function processRangeCheck():void { 
     var typedNumber:Number = Number(numericStepper.textDisplay.text); 
     if (typedNumber > numericStepper.maximum || typedNumber < numericStepper.minimum) { 
      Alert.show("The typed number " + typedNumber + " is out of range.", "Out of Range Warning"); 
     } 
     isProcessRequiredOnFocusOut = true; 
    } 
    ]]></fx:Script> 
<s:Panel title="Show Error message when Typed Number is out of range in Numeric Stepper." 
      verticalCenter="0" horizontalCenter="0"> 
    <s:VGroup paddingTop="10" paddingLeft="10" 
       paddingRight="10" paddingBottom="10" 
       horizontalAlign="center" 
       width="100%"> 
     <s:Label text="The valid range of Numeric Stepper is 10-20."/> 
     <s:NumericStepper id="numericStepper" 
          minimum="10" 
          maximum="20" 
          creationComplete="addEventListeners()"/> 
     <s:Button label="Click here to focus out from the Text Input of Numeric Stepper."/> 
    </s:VGroup> 
</s:Panel> 
</s:Application> 
+0

그것은 나를 위해 작동합니다. 대단히 감사합니다. – Waveter

2

음, 최대과 여전히 입력 점점 -while NumericStepper 구성 요소의 최소 값에 대한 입력 값을 확인 할 수있는 직관적 인 방법은 textField 재산 KEY_UP의 키보드 이벤트를 수신하는 것 NumericStepper 인스턴스의 :

import fl.controls.NumericStepper; 
import flash.events.KeyboardEvent; 

var numericStepper:NumericStepper = new NumericStepper(); 
numericStepper.maximum = 250; 
numericStepper.minimum = 3; 

numericStepper.textField.addEventListener(KeyboardEvent.KEY_UP, function(e:Event):void { 
    var n:Number = Number(numericStepper.textField.text); 
    if (n > numericStepper.maximum || n < numericStepper.minimum) { 
     trace("Error: Out of Range!"); 
    } 
}); 
addChild(numericStepper); 
+0

내가 텍스트 필드 속성을 찾을 수 없습니다 숫자 스테퍼의 – Waveter

0

사용 mx_internal의 property에 NumericStepper

의 inputField를 참조하십시오