`
lipbb
  • 浏览: 68528 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex 自定义 Validator

阅读更多
flex 自定义验证器(Validator),先看下示例(有点大,500多K,请耐心等待加载 ) 好像显示不出来flash了?
直接访问 这里



代码如下:
ValidatorDate.as

package utils
{
	import mx.controls.DateField;
	import mx.validators.ValidationResult;
	import mx.validators.Validator;
	
	/**
	 * 用于验证起始时间必须小于结束时间。<br>
	 * 使用时必须指定 startDateField 与 endDateField,可选属性 errorMessage。<br>
	 * 注意:由于涉及到两个控件,所以对于 required 判断是同时的(必须两个时间同时不为空),可自定义 requiredFieldError 使它看上去"正确"。
	 */
	public class ValidatorDate extends Validator
	{
		public function ValidatorDate()
		{
			super();
		}
		
		private var _startDateField:DateField;

		public function get startDateField():DateField
		{
			return _startDateField;
		}

		public function set startDateField(value:DateField):void
		{
			removeListenerHandler();
			
			_startDateField = value;
			
			addListenerHandler();
		}

		private var _endDateField:DateField;

		public function get endDateField():DateField
		{
			return _endDateField;
		}

		public function set endDateField(value:DateField):void
		{
			removeListenerHandler();
			
			_endDateField = value;
			
			addListenerHandler();
		}
		
		private var _errorMessage:String = "起始时间不能晚于结束时间";

		public function get errorMessage():String
		{
			return _errorMessage;
		}

		public function set errorMessage(value:String):void
		{
			_errorMessage = value;
		}
		
		
		override protected function get actualListeners():Array
		{
			return [_startDateField, _endDateField];
		}
		
		override protected function doValidation(value:Object):Array
		{
			var results:Array = super.doValidation(value);
			
			if (results.length > 0 || ((value == null) && !required))
			{
				return results;
			}
			else
			{
				var start:Date = value.startDate;
				var end:Date = value.endDate;
				if(start.time > end.time)
				{
					var vr:ValidationResult = new ValidationResult(true, "", "startIsAfterEnd", errorMessage);
					results.push(vr);
				}
			}
			
			return results;
		}
		
		override protected function getValueFromSource():Object
		{
			var value:Object = {};
			
			if(_startDateField && _endDateField && _startDateField.selectedDate && _endDateField.selectedDate)
			{
				value.startDate = _startDateField.selectedDate;
				value.endDate = _endDateField.selectedDate;
				
				return value;
			}
			else 
			{
				return null;
			}
		}
		
		
	}
}


示例程序:ValidateSample.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
		 xmlns:s="library://ns.adobe.com/flex/spark" 
		 xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300" xmlns:utils="utils.*">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
		<utils:ValidatorDate id="vd" startDateField="{startDateField}" endDateField="{endDateField}" 
							 trigger="{submitButton}" triggerEvent="click"
							 requiredFieldError="开始日期与结束日期都不能为空"
							 errorMessage="开始日期不能晚于结束日期"/>
	</fx:Declarations>
	
	<s:Form width="100%" height="100%">
		<s:FormHeading label="验证操作示例"/>
		<s:FormItem label="开始日期">
			<!--这里 formatString 是必须设置的属性,否则 selectedDate 始终为null -->
			<mx:DateField id="startDateField" formatString="YYYY-MM-DD"/>
		</s:FormItem>
		<s:FormItem label="结束日期">
			<mx:DateField id="endDateField" formatString="YYYY-MM-DD"/>
		</s:FormItem>
		<s:FormItem>
			<s:Button id="submitButton" label="提交" click="trace('start date:', startDateField.selectedDate);"/>
		</s:FormItem>
	</s:Form>
</s:Group>


似乎不怎么需要解说,还有问题的话留言吧
0
0
分享到:
评论

相关推荐

    Flex from_validator_表单验证

    `Flex from_validator_表单验证`提供了强大的验证功能,不仅可以使用预定义的验证器,还可以灵活地自定义验证规则。理解并熟练应用这些知识点,能帮助你构建出健壮且用户体验良好的表单系统。 以上是对"Flex from_...

    构建Flex自动验证框架

    通常,Flex开发者会使用Validator类或者创建自定义Validator类来实现这一功能。自定义验证框架可能包括以下关键组成部分: 1. **验证规则定义**:定义各种验证规则,如非空检查、长度限制、格式验证(如邮箱、电话...

    flex form 验证(转)

    在Flex中,可以使用内置的验证规则或者自定义验证规则来实现。 2. **FormValidator类** `FormValidator`是Flex提供的验证类,它允许开发者为表单字段指定验证规则。通过实例化`FormValidator`,我们可以配置验证...

    Flex实现非空验证小例子

    在Flex中,我们可以使用Validator类来创建自定义验证器。首先,你需要创建一个继承自mx.validators.Validator的子类,覆盖validate()方法。在这个方法中,你可以添加你的验证逻辑,比如检查字段是否为空。如果字段为...

    flex自动验证组建(插件)

    这些验证组件是基于Adobe Flex框架的Validator功能,能够为表单字段提供实时或提交时的验证,提高用户体验并减少服务器端的压力。 Flex验证组件的核心在于`Validator`类,它允许开发者定义验证规则,并在用户输入...

    flex 表单数据合法性验证

    在Flex中,我们通常使用MX组件库中的Form组件来创建表单,而表单验证则是通过Validator类进行的。 1. **表单组件和验证器**: Flex的MX组件库提供了一系列的表单组件,如TextInput、TextArea、ComboBox等,它们都...

    Wrox.Professional.Adobe.Flex.2.May.2007

    #### 第15章 - Custom Formatter, Validator, and Effect Components(自定义格式器、验证器和效果组件) 除了UI组件外,Flex还支持创建自定义的格式器、验证器和效果组件,用于数据格式化、输入验证和动画效果。本...

    flex 重写组件

    1. **解决业务需求**:当现有Flex组件的功能或样式不足以满足项目的特殊需求时,如自定义一个按钮组件以支持长文本自动换行的功能,就需要对其进行重写。 2. **模块化设计**:为了提高代码的复用性和维护性,开发者...

    flex-带checkbox的datagrid

    Flex提供了验证框架,可以通过Validator类实现。同时,当出现错误时,应使用错误提示和错误对象来通知用户。 通过以上知识点的应用,你可以创建一个功能完善的、带有复选框的Flex Datagrid,提供给用户高效、直观的...

    Flex数据显示与数据验证

    在Flex中,可以通过内置的验证器类来实现这一目标,这些验证器包括但不限于`CreditCardValidator`、`CurrencyValidator`、`DateValidator`和`EmailValidator`等。 #### 验证器的使用方式 验证器通常被定义在组件的...

    郑岩峰,幻想Flex3,源代码6

    在Flex3中,你可以使用预定义的验证控件如NumberValidator、EmailValidator等,或者自定义验证规则。这些控件通常与Form或FormElement关联,当用户提交数据时自动触发验证。如果验证失败,Flex会显示错误提示,帮助...

    (十五)Flex4_格式化与校验器

    Flex4提供了Validator类,开发者可以通过继承这个基类来创建自定义的验证规则。内置的验证器包括StringValidator(用于检查字符串长度或格式)、NumberValidator(检查数值范围)以及DateValidator(验证日期格式)...

    flex----组件---数据验证类

    数据验证在Flex中通常涉及到两个主要的类:Validator和Formatters。Validator类用于检查用户输入是否符合预设的验证规则,如非空、数字范围、邮箱格式等。这些验证规则可以通过创建Validator实例并设置其属性来实现...

    Flex组建重写

    - 创建非可视化的组件(如`Formatter`、`Validator`等)。 - 需要添加日志功能的组件。 #### 四、AS方式重写Flex组件的步骤 1. **创建皮肤**:如果有必要,为组件创建基于标记的皮肤文件。 2. **创建...

    Flex组件生命周期[收集].pdf

    对于非可视化的组件,如Formatter、Validator和Effect,必须使用AS编写。此外,如果需要添加日志功能或进行更底层的操作,AS也是首选。 例如,以下是一个使用AS创建按钮的代码片段: ```actionscript package { ...

    flex3的cookbook书籍完整版dpf(包含目录)

    flex3的cookbook书籍完整版dpf(包含目录),目录是我花了两个多小时自己整理的,希望对大家有帮助。 目录: 第一章.Flex与ActionScript基础(3) 1.1节.用FlexBuilder创建Flex项目 1.2节.用FlexBuilder创建Flex库项目 ...

    flex组件重写

    1. 扩展功能:当Flex已有的组件无法满足特定业务需求时,我们可以通过继承现有组件并进行扩展,比如创建一个长文本不自动换行的自定义按钮。 2. 提高可复用性:通过组合多个组件创建更复杂的复合控件,例如,将...

    flex数据绑定

    可以定义自定义的转换器(Converter)和验证器(Validator)来处理数据绑定过程中数据类型的转换和数据的有效性检查。 8. **复合数据绑定**: 多个数据源可以组合在一起形成复杂的表达式,如`{source1.property1 ...

    Flex UI组件使用全集

    - **Canvas**: 用于自定义绘制的容器。 - **ControlBar**: 控制栏组件,用于放置工具栏等控件。 - **DivideBox**: 可调整大小的容器,允许用户通过拖拽来调整子组件的大小。 - **Form、FormHeading、FormItem**: ...

Global site tag (gtag.js) - Google Analytics