ExtJs表单验证的方法总结

来源:互联网 发布:如何才能进去sci数据库 编辑:程序博客网 时间:2024/06/01 23:25

一、基本验证方式,使用vtype属性。

1.alpha只能输入字母,无法输入其他(如数字,特殊符号等)

2.alphanum只能输入字母和数字,无法输入其他

3.email验证,要求的格式是596005496@qq.com

4.url格式验证,要求的格式是http://www.baidu.com

二、其他方式验证。

1.验证最大最小输入字数。(Ext中maxLength和minLength不太管用!)

1
2
3
4
maxLength : 20,//允许输入的最大字符数
maxLengthText : "用户帐号最大长度不能超过20个字符!",//提示文本
minLength : 3, //允许输入的最少字符数
minLengthText : "用户帐号最小长度不能少于3个字符!",//提示文本

注意:中文字符不是两个字符,比如“你好”算2个字符。

2.正则表达式验证。

1
2
regex : /^(([0-9]+[a-zA-Z]+)|([a-zA-Z]+[0-9]+))$/,
regexText : "对不起,用户帐号只能输入字母和数字!",

三、vtype实现高级验证。

因为Extjs的vtype只实现了四种基本的验证方式,所有需要自己去创建新的验证方式。

在表单初始化时后面加入代码

1
2
3
4
5
Ext.apply(Ext.form.VTypes, {
     verifycustomer : function(value) {//验证方法名
        //验证方法
    }
});

设置控件的vtype属性为自定义的验证方法名和提示文本vtypeText属性。

1
2
vtype : "verifycustomer",
vtypeText : "对不起,客户账号已经存在!",
 

例如:

1
2
3
4
5
6
7
8
9
10
Ext.apply(Ext.form.VTypes,
{   // 年度必须是4位的验证
     numCheck : function(val, field){
        if(val.match(/\d/g).length != 4){
            return false;
            }
        return true;
    },
    numCheckText : '请输入4位数的年度!'
}

最后只要使用vtype : 'numCheck'即可。


实例:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>validate.html</title>
      
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      
     <link rel="stylesheet" type="text/css" href="../ext/resources/css/ext-all.css">
    <script type="text/javascript" src="../ext/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="../ext/ext-all.js"></script>
    <script type="text/javascript">
        Ext.onReady(function(){
            Ext.QuickTips.init();
            // 非空验证,通过allowBlank:false实现
            var name = new Ext.form.TextField(
                {
                name:"name",
                fieldLabel:"用户名",
                allowBlank:false,
                blankText:"用户名不能为空!",
                width:300,
                renderTo:document.body
                }
            );
              
            // 长度验证
            var pwd = new Ext.form.TextField(
                {
                    name:"pwd",
                    fieldLabel:"密码",
                    inputType:"password",
                    minLength:6,
                    maxLength:16,
                    minLengthText:"密码至少6位!",
                    maxLengthText:"密码最多16位!",
                    width:300,
                    renderTo:document.body,
                    allowBlank:false,
                    blankText:"密码不能为空!"
                }
            );
              
            // vtype验证。可以验证包含以下:1.字母和下划线(alpha)。2.字母、数字、下划线(alphanum)。3.邮箱(email)。4.网址(url)
            var url = new Ext.form.TextField(
                {
                    name:"url",
                    fieldLabel:"网址",
                    allowBlank:false,
                    blankText:"网址为必输项!",
                    vtype:"url",
                    vtypeText:"您的网址输入有误!",
                    width:300,
                    renderTo:document.body
                }
            );
              
            // 正则表达式验证
            var file = new Ext.form.TextField(
                {
                    name:"name",
                    fieldLabel:"Name",
                    width:300,
                    allowBlank:false,
                    blankText:"name字段不能为空!",
                    renderTo:document.body,
                    regex:/^w{8,}$/,//至少6个字符
                    invalidText:"请输入至少8这个字符!"
                }
            );
        });
</script>
  </head>
    
  <body>
      
  </body>
</html>

0 0
原创粉丝点击