Ext中的表单提示, 有时候不是那么的尽人意, 于是我们就会想到重写它的方法, 于是我写了几个例子试试,
1
Ext.form.FormPanel.prototype.submit
=
function
()
{
2
if(!this.form.isValid(true))
3
this.validateItems();
4
else
5
return this.form.submit.apply(this.form,arguments)
6
}
7
8
//
## 扩展form验证
9
Ext.form.FormPanel.prototype.validateItems
=
function
()
10
{
11
try
12
{
13
var items = this.items.items;
14
var blanks = "";
15
var errorFields = [];
16
17
for(var i = 0; i < items.length; i ++ )
18
{
19
if( ! items[i].isValid(true))
20
{
21
if(items[i].blankText.indexOf("This is") == -1)
22
items[i].blankText = items[i].fieldLabel+"不能为空!";
23
blanks += items[i].blankText + "<br/>";
24
errorFields.push(items[i]);
25
}
26
}
27
blanks = blanks.substr(0, blanks.length - 5);
28
Ext.Msg.show(
29
{
30
title : '验证信息',
31
icon : Ext.MessageBox.ERROR,
32
buttons : Ext.MessageBox.OK,
33
width : 350,
34
msg : blanks.toString(),
35
fn : function()
36
{
37
for(var i = 0; i < errorFields.length; i ++ )
38
{
39
errorFields[i].reset();
40
}
41
errorFields[0].selectText();
42
errorFields = null;
43
return;
44
}
45
});
46
}
47
finally
48
{
49
blanks = null;
50
items = null;
51
}
52
}
;
53
Ext.form.BasicForm.prototype.validateItems
=
Ext.form.FormPanel.prototype.validateItems;
54

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

这是一个表单验证的例子, 再放一个添加vtype类型的代码













上面这个就是验证两次密码的输入是否一致,
有时候看到FormPanel里的allowBlank提示是很不爽, 它只会提示 “该输入项为必输项” 这样的提示总觉得不舒服, 于是我给他改成了这样
“用户名不能为空!” 等等,这里要引用Ext 里的本地语言包, 注明到底是哪个为必填项, 重写Ext的 方法代码如下










































它就会提示这样