[DataSet] ?????

2011-12-28 12:00:57by ????

验证器校验

概述

验证器校验可以完成页面上大多数自定义校验,比如:校验结束日期是否大于开始日期,密码长度是否足够。

页面上的显示效果为:未检验通过的字段显示红色,鼠标悬浮,提示为通过的原因。如下图检验结束日期不能小于开始日期的效果

实现的方法,首先为dataSet的field字段设置属性validator="yyy",然后再javascript代码中,定义yyy函数。该函数接受3个参数,和2种返回值

第1个是当前记录record。

第2个是当前记录中的当前列name。

第3个参数是当前的值value。

第1种返回值为true,表示验证成功

第2种返回值为验证不通过的原因

这样每次页面上当前值改变时,都会触发定义的yyy函数,进行校验,如果校验成功则返回true,页面上没有任何提示。如果校验未通过,则返回未通过的原因,并且当前值变为红色。

下面的代码用验证器校验了结束日期不能小于开始日期


function compareDate(start, end)
{
	if(start > end)
	{
		return false;
	}
                return true;
}

function dateValidator(record, name, value)
{
	if(name == 'start_date' || name == 'end_date')
	{
		var start_date = record.get('start_date');
		var end_date = record.get('end_date');

		if(!Ext.isEmpty(end_date))
		{
			if(!compareDate(start_date, end_date))
			{
				return '结束日期不能小于开始日期';
                        }
		}

		return true;

	}

}



<a:dataSets>
	<a:dataSet id="bbb_ds" model="xxx">
		<a:fields>
			<a:field name="start_date" required="true" validator="dateValidator"/>
			<a:field name="end_date" required="true" validator="dateValidator"/>
		</a:fields>
	</a:dataSet>
</a:dataSets>

<a:form title="必填字段自动校验" >
	<a:datePicker name="start_date" bindTarget="bbb_ds" prompt="开始日期"/>
	<a:datePicker name="end_date"  bindTarget="bbb_ds"  prompt="结束日期" />
</a:form>

		
Demo
    Attachments

      Comments

      0 Responses to the article

      暂时没有评论。

      发表评论