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