[英]Action Script 3 NumericStepper validation for empty value
I have a simple NumericStepper which looks like this: 我有一个简单的NumericStepper,看起来像这样:
<mx:NumericStepper id="nsPort"
minimum="0"
maximum="65535"
stepSize="1"
value="{PORT_DEFAULT}"/>
I wrote a Validator for it (which doesn't work as I expect): 我为此编写了一个验证器(它不能按预期工作):
<mx:NumberValidator
required="true"
source="{nsPort}"
property="value"/>
However, every time I don't enter anything into NumericStepper it passes zero, not NULL or something else, which is...well...a valid value. 但是,每次我不向NumericStepper输入任何内容时,它都会传递零,而不是NULL或其他值,这是...一个有效值。 I suspect that this is done on purpose. 我怀疑这是故意的。 So, how can I make blank value at NumbericStepper to be invalid? 那么,如何使NumbericStepper的空白值无效? Please note that I'm restricted to a ver.3 of Action Script. 请注意,我仅限于动作脚本的第三版。
Example code base from https://flexscript.wordpress.com/2008/09/22/flex-creating-custom-validators/ with a little modification: 来自https://flexscript.wordpress.com/2008/09/22/flex-creating-custom-validators/的示例代码库,进行了一些修改:
package flexScript
{
import mx.validators.ValidationResult;
import mx.validators.Validator;
//Class should extend mx.validators.Validator
public class NumericStepperValidator extends Validator {
public function NumericStepperValidator() {
// Call base class constructor.
super();
}
// Class should override the doValidation() method.
//doValidation method should accept an Object type parameter
override protected function doValidation(value:Object):Array {
// create an array to return.
var ValidatorResults:Array = new Array();
// Call base class doValidation().
ValidatorResults = super.doValidation(value);
// Return if there are errors.
if (ValidatorResults.length > 0)
return ValidatorResults;
if (String(value).length == 0)
return ValidatorResults;
if ( value == 0)//as your required.
return ValidatorResults;
var RegPattern:RegExp = /\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/; //Change to your customize regExpression
var a:Array = RegPattern.exec(String(value));
if (a == null)
{
ValidatorResults.push(new ValidationResult(true, null, "NumbericStepper Error","You must enter an Number"));
return ValidatorResults;
}
return ValidatorResults;
}
}
}
<flexScript:NumbericStepperValidator source="{{nsPort}}" property="number"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.