Ext.NET加入自定义验证JS函数
ExtJS验证很方便,在使用FormPanel的时候,我们可以很方便的进行验证。比如设置必填项、正则、字段类型等等。比如如下所示:

上面的验证是这么写的:
| 
 1 
2 
3 
 | 
<Listeners>    <ClientValidation Handler="#{btnSave}.setDisabled(!valid);#{tbSave}.setDisabled(!valid);#{btnSumbit1}.setDisabled(!valid);#{btnSumbit2}.setDisabled(!valid);var valCs=valid ? 'valaccept' : 'valexclamation';var msg=valid ? '<span style=\'color:green;\'>验证通过,可以提交数据</span>' : '<span style=\'color:red;\'>输入有误,请检查标红的输入项。</span>';this.getBottomToolbar().setStatus({text :msg, iconCls: valCs});showMsg('温馨提示',msg,valCs);" /></Listeners> | 
但是往往,有些复杂的验证我们是需要我们写脚本验证的。那么怎么做到通用呢?比如下面的情况:

左侧S、M、L、XL总数不能超过2件,右侧不能超过6件。首先可以定义以下验证JS,来验证数量是否超过最大值。
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
 | 
function valSumMax(ids, maxValue, msg) {    if (ids != null && ids.length > 0) {        var _temp = 0;        for (var i = 0; i < ids.length; i++) {            var value = Ext.getCmp(ids[i]).getValue();            if (!isNaN(value)) {                _temp += value;                if (_temp > maxValue) {                    var message = { 'IsVal': false, 'Message': msg != "" ? msg : ("超过最大值" + maxValue + "。") };                    return message;                }            }        }    }    var message = { 'IsVal': true, 'Message': '' };    return message;} | 
为了做到通用,于是又定义以下JS函数
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
 | 
function CustomValidator() {    var msg = valSumMax(ids1, 2, "美容顾问服装最多只能填2件。请修改总数。");    if (!msg.IsVal)        return msg;    msg = valSumMax(ids2, 6, "美容师服装最多只能填6件。请修改总数。");    return msg;}function ValCustomValidator(isVal, valid) {    if (typeof (valid) != 'undefined' && (!valid))        return valid;    if (typeof (isVal) == 'undefined' || isVal == null || isVal) {        var msg = CustomValidator();        if (!msg.IsVal) {            Ext.MessageBox.show({                title: '错误',                msg: msg.Message,                buttons: Ext.MessageBox.OK,                icon: Ext.MessageBox.ERROR            });            return false;        } else {            return true;        }    } else {        return CustomValidator();    }} | 
最后,要写监听的验证Handler了。可以这么写:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
 | 
_fp.Listeners.ClientValidation.Handler =               @"                            var isCheckd=valid;var msgs;var msg='';                            if(typeof(ValCustomValidator)=='function')                            {                                msgs=ValCustomValidator(false,valid);                                if(typeof(msgs.IsVal)!='undefined')                                {                                    isCheckd=msgs.IsVal;                                    if(msgs.Message!='')                                    msg='<span style=\'color:red;\'>'+msgs.Message+'</span>';                                }                                else                                    isCheckd=msgs;                            }                         #{btnSave}.setDisabled(!isCheckd);                         #{tbSave}.setDisabled(!isCheckd);                         #{btnSumbit1}.setDisabled(!isCheckd);                         #{btnSumbit2}.setDisabled(!isCheckd);                         var valCs=isCheckd ? 'valaccept' : 'valexclamation';                         if (msg=='')                             msg=isCheckd ? '<span style=\'color:green;\'>验证通过,可以提交数据</span>' : '<span style=\'color:red;\'>输入有误,请检查标红的输入项。</span>';                         this.getBottomToolbar().setStatus({text :msg, iconCls: valCs});showMsg('温馨提示',msg,valCs);                        "; | 
这样的话,即使不存在JS函数ValCustomValidator,验证都是没问题的。需要自定义的话,那么就可以定义ValCustomValidator函数来完成自己的验证了。

Ext.NET加入自定义验证JS函数的更多相关文章
- flask 自定义验证器(行内验证器、全局验证器)
		
自定义验证器 在WTForms中,验证器是指在定义字段时传入validators参数列表的可调用对象,下面来看下编写自定义验证器. 行内验证器 除了使用WTForms提供的验证器来验证表单字段,我们还 ...
 - Flask系列09--Flask中WTForms插件,及自定义验证器
		
一.概述 django中的forms组件非常的方便,在flask中有WTForms的组件实现的也是类似的功能, 安装这个插件 二.简单使用 文档地址https://wtforms.readthedoc ...
 - js函数、表单验证
		
惊天bug!!!在script里面只要有一点点错误,就都不执行了!!!所以每写一个方法,就跑一下,因为这个书写疏忽导致的bug不可估量!!! [笑哭,所以我才这么讨厌js么,后来真心的是一点都不想再看 ...
 - 分享我常用的一些JS验证和函数
		
下面是我常用一些JS验证和函数,有一些验证我直接写到了对象的属性里面了,可以直接通过对象.方法来调用//浮点数除法运算 function fdiv(a, b, n) { if (n == undefi ...
 - 常用JS验证和函数
		
下面是我常用一些JS验证和函数,有一些验证我直接写到了对象的属性里面了,可以直接通过对象.方法来调用 //浮点数除法运算 function fdiv(a, b, n) { if (n == undef ...
 - js函数验证方式:验证是否是数字,支持小数,负数
		
验证 datatype="/^\d+(\.\d+)?$/" validatform验证是否是数字 支持小数点 datatype="d" 貌似支持小数 js函数验 ...
 - WebForm服务器验证控件与前端js自定义验证共同使用
		
问题: 前端aspx页面中需要在button中添加OnClientClick事件后,这个OnClientClick所执行的自定义的客户端js验证:这个时候,所有的服务器验证控件都会失效! ...
 - Extjs自定义验证介绍
		
表单验证实例(空验证,密码确认验证,email验证) 我们可以用单独的js写表单验证,但是extjs已经为我们想到了(自己单独写反而不方便). 在验证之前,我不得不提两个小知识点: //大家在很多的e ...
 - html5  自定义验证信息
		
h5 为表单新增了很多类型,及属性. 根据这些新增的类型及属性 h5也为我们提供了验证这些数据的js函数,这些验证表单的函数都存在了ValidityState对象中,接下来让我们一起来了解一下这些 ...
 
随机推荐
- Japanese Learning - Words and Sentences 1
			
1. いらっしゃいませ.何名さまですか. 二人です. タバコをお吸いになりますか. かしこまりました.少々お待ちください. お勘定お願いします. ご一緒でよろしいでしょうか. 別々にお願いします. 2 ...
 - java 中的常用类
			
Java 中的包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等. 基本数据类型是不具备对象的特性的,比如基本类型不能调用方法.功能 ...
 - cobbler简介+安装
			
(介绍部分的内容部分是借鉴网上的非原创) 回顾pxe+kickstart PXE PXE(preboot execute environment,预启动执行环境) PXE启动原理: 当计 ...
 - POJ 3659 Cell Phone Network / HUST 1036 Cell Phone Network(最小支配集,树型动态规划,贪心)-动态规划做法
			
POJ 3659 Cell Phone Network / HUST 1036 Cell Phone Network(最小支配集,树型动态规划,贪心) Description Farmer John ...
 - Easyui+MVC+FullCalendar插件实现日程记录功能
			
好久好久好久,,,没有写博客了,,久到账号都忘记了....分享一个干货.... 废话少说,先看看效果图. 要实现这样一个功能,先创建一个用于存储日程的记录表(不要问我为什么都是大写,因为初版在orac ...
 - Win7 JBOSS的下载安装、环境变量配置以及部署
			
1. 下载安装 http://jbossas.jboss.org/downloads/ 我下载的是:JBoss AS7.1.1.Final 2. 解压安装包 D:\Java\jboss-as-7.1 ...
 - Klass与Oop
			
前段时间,一直在看<Hotspot实战>,顺便编译了一份OpenJDK的源码,然后就在eclipse里面调试起来. 虽然我的入门语言是c/c++,但是被Java拉过来好几年了,现在再看源码 ...
 - 浅谈JVM与内存分配
			
一.程序内存分配 初始内存分配 当一个程序准备运行时,它首先向java虚拟机要内存,但是java虚拟机本身没有权限,它只能向操作系统申请内存,此时java虚拟机会拥有一个初始内存, 此处额外说明一下e ...
 - informatica 学习总结
			
问:什么是BI? 答:BI是商务智能,它包含的应用系统和技术较宽泛,通过收集,存储,分析和提供对数据的访问,来帮助企业用户做出更好的商务决策. BI应用包括决策支持,查询和报表,联机分析处理OLAP, ...
 - python之基本内容
			
这里提供在使用python进行开发中常使用到的方法技巧,如有不对欢迎批评指正. 要点:开发中类.变量特性查询,类型就是类,断言的使用,深浅复制判断等 python脚本文件是使用UTF-8编码的,所以在 ...