当数字步进器的值超出范围时显示错误
Show error when value of numeric stepper out of range
当我为数字步进器设置最大值和最小值时,我仍然可以输入超出该范围的数字。但如果我输入大于该值的数字,它会自动接收最大值。对于这种情况,我如何显示错误,但仍保持设置的最大值和最小值?
好吧,这是一种根据 NumericStepper
component –while it's still getting entered, would be to listen to the keyboard event of KEY_UP
on the textField
的 最大值 和 最小值 检查输入值的直观方法 属性 的 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);
使用mx_internal 属性来引用NumericStepper的inputField
numericStepper.maximum = 250;
numericStepper.minimum = 3;
numericStepper.mx_internal::inputField.addEventListener(KeyboardEvent.KEY_UP, function(e:Event):void {
var n:Number = Number(numericStepper.mx_internal::inputField.text);
if (n > numericStepper.maximum || n < numericStepper.minimum) {
Alert.show("Error: Out of Range!");
}
});
当用户点击 ENTER 键或从 NumericStepper
的 text input
中点击 focus out
时,你可以用你的逻辑来检查是否输入的号码在以下范围内:
<?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>
当我为数字步进器设置最大值和最小值时,我仍然可以输入超出该范围的数字。但如果我输入大于该值的数字,它会自动接收最大值。对于这种情况,我如何显示错误,但仍保持设置的最大值和最小值?
好吧,这是一种根据 NumericStepper
component –while it's still getting entered, would be to listen to the keyboard event of KEY_UP
on the textField
的 最大值 和 最小值 检查输入值的直观方法 属性 的 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);
使用mx_internal 属性来引用NumericStepper的inputField
numericStepper.maximum = 250;
numericStepper.minimum = 3;
numericStepper.mx_internal::inputField.addEventListener(KeyboardEvent.KEY_UP, function(e:Event):void {
var n:Number = Number(numericStepper.mx_internal::inputField.text);
if (n > numericStepper.maximum || n < numericStepper.minimum) {
Alert.show("Error: Out of Range!");
}
});
当用户点击 ENTER 键或从 NumericStepper
的 text input
中点击 focus out
时,你可以用你的逻辑来检查是否输入的号码在以下范围内:
<?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>