| [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暂时没有评论。