冰树之家

------------等了好久了,你才来呀!

用户操作
[即时聊天] [发私信] [加为好友]
冰树ID:zzr173
148772次访问,排名551,好友10人,关注者14人。
zzr173的文章
原创 127 篇
翻译 0 篇
转载 16 篇
评论 72 篇
冰树的公告

欢迎和我成为朋友哦

我会记住我所有的朋友,当然里面有你!

有空点这Q我吧
点这里skype语音
点这里泡我 不Q我也得POPO我哦

最近评论
goodhuxm:怎么没图片啊
说的很细
我是到了2. 用MyEclipse添加Web容器  就不会了
能不能有个图来说明一下啊
我的信箱是:huxianmiao1985@sina.com.cn
可以把图发到我信箱吗?
谢了
ematrix001:页面加载速度有点慢哈
jack:非常感谢你的这篇文章,受益不少。
samoolee:这是你新写的吗?
版本真够低的.

samoolee:这个是原创不?
文章分类
收藏
相册
冰树之爱
VC/C#.NET
中文C#技术站
开发
Ajax中国
java开源大全
中国eclipse社区(RSS)
其他
下载好地方
广西学生成才网
液晶-天使
猫扑网站
音乐
中国音乐在线
存档
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 用Validator组件检测必填项收藏

新一篇: 使用Validators.validateAll()方法同时验证多个输入 | 旧一篇: 在Flex中给Image组件无法显示时设置一个默认的图

 mx.validators包,在Flex框架中是相当的有用,但由于其功能复杂,我总是边用边忘。现将使用方法记录在这里把……

 

第一个例子:

源码如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="12" width="300" height="120">
 <mx:Validator id="nameV" source="{nameTI}" property="text" requiredFieldError="必须输入用户名!"/>
 <mx:FormItem label="用户名:">
 <mx:TextInput id="nameTI"/>
 </mx:FormItem>
 <mx:Button id="btn" label="提交" />
</mx:Application>


从上面的源码可以看出,要使用mx.validators包中的功能真的很简单。Validator组件的功能是检测必填项。我们把要检测的组件的名字写在source属性中,把要检测的组件的属性写在property属性中,然后自定义 requiredFieldError属性的值即可。当然requiredFieldError属性的值也可以不定义,那么就会使用默认的提示文字(英文)。

上面的错误提示的文字有些看不清,只需要加上这样一句就OK了:

<mx:Style>
 .errorTip
 {
 fontSize: 12;
 }
</mx:Style>
 
上面是一个小小的热身,让我们再来看几个简单的例子。

控制检测时机

默认的情况下,Flex当我们切换组件焦点的时候检测,能不能改变这个检测时机?看看下面这个例子:
这个例子中,按Tab键切换焦点已经不能触发检测动作了,只有单击“提交”按钮才会触发检测。源码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="12" width="300" height="150">
 <mx:Style>
 <![CDATA[
 .errorTip
 {
 fontSize: 12;
 }
 ]]>
 </mx:Style>
 <mx:Validator id="nameV" source="{nameTI}" property="text"
 requiredFieldError="必须输入姓名!"
 trigger="{btn}" triggerEvent="click"/>
 <mx:Validator id="ageV" source="{ageTI}" property="text"
 requiredFieldError="必须输入年龄!"
 trigger="{btn}" triggerEvent="click"/>
 <mx:FormItem label="姓名:">
 <mx:TextInput id="nameTI"/>
 </mx:FormItem>
 <mx:FormItem label="年龄:">
 <mx:TextInput id="ageTI"/>
 </mx:FormItem>
 <mx:Button id="btn" label="提交" />
</mx:Application>

这是因为,在默认情况下,Validator 会在Flex发出valueCommit事件的时候进行检测,因此当焦点改变的时候,会自动进行检测。而上面的源码中,则手动指定了进行检测的事件是btn按钮的click事件。
控制错误显示的目标

Validator还有一个listen属性,这个属性有什么用呢?它用来指定检测的错误信息显示在哪个组件上。这有什么作用呢?难道我们检测到错误信息之后,不显示在发生错误的组件上,反而显示到其它组件上不成?看看例子吧:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="12" width="300" height="200">
 <mx:Style>
 <![CDATA[
 .errorTip
 {
 fontSize: 12;
 }
 ]]>
 </mx:Style>
 <mx:Validator id="nameV" source="{nameTI}" property="text"
 requiredFieldError="必须输入姓名!"
 trigger="{btn}" triggerEvent="click"/>
 <mx:Validator id="ageV" source="{ageTI}" property="text"
 requiredFieldError="必须输入年龄!"
 trigger="{btn}" triggerEvent="click"/>
 <mx:Validator id="sexV" source="{sexRBG}" property="selectedValue"
 requiredFieldError="必须选择性别!"
 trigger="{btn}" triggerEvent="click"
 listener="{maleRB}"/>
 <mx:FormItem label="姓名:" width="150">
 <mx:TextInput id="nameTI"/>
 </mx:FormItem>
 <mx:FormItem label="年龄:" width="150">
 <mx:TextInput id="ageTI"/>
 </mx:FormItem>
 <mx:FormItem label="性别:" direction="horizontal" width="150">
 <mx:RadioButtonGroup id="sexRBG"/>
 <mx:RadioButton id="maleRB" groupName="sexRBG" label="男" value="1"/>
 <mx:RadioButton id="femaleRB" groupName="sexRBG" label="女" value="0"/>
 </mx:FormItem>
 <mx:Button id="btn" label="提交" />
</mx:Application>

在上面的例子中,对于性别的选择,由于检测两个RadioButton比较麻烦,采用了检测RadioButtonGroup的 selectedValue属性的方法,如果这个属性为空,就说明两个RadioButton都没有选择。但RadioButtonGroup并不是一个可视组件,检测的错误信息无法显示出来,所以这里就使用了listen属性将显示信息转到maleRB组件上进行显示了。

发表于 @ 2008年08月28日 11:19:00|评论(loading...)|收藏

新一篇: 使用Validators.validateAll()方法同时验证多个输入 | 旧一篇: 在Flex中给Image组件无法显示时设置一个默认的图

评论:没有评论。

发表评论  


登录
Csdn Blog version 3.1a
Copyright © 冰树