对ExtJS基础稍微有所了解的人都知道,表单验证肯定需要到FormPanel了,那么FormPanel首先他是继承自Ext.Panel的,其他的如TreePanel,GridPanel,TabPanel等也是继承自Ext.Panel的,今天要说的是表单验证,为什么要用ExtJs的表单验证呢,自己手写JS代码也可以完成啊,因为Ext早就帮我们做好了,我只是拿过来用就可以了,写JS得多少行代码啊
闲话少说,在验证之前,我不得不提两个小知识点:
第一点:
//大家在很多的extjs代码中都看到了这两个,他们都起提示作用的
Ext.QuickTips.init();//支持tips提示
Ext.form.Field.prototype.msgTarget='side';//提示的方式,枚举值为"qtip","title","under","side",id(元素id)
//side方式用的较多,右边出现红色感叹号,鼠标上去出现错误提示
//大家可以分别去掉这两行代码,看效果就会明白他们的作用,(放在onReady的function(){}中)
第二点:
//空验证的两个参数
1.allowBlank:false//false则不能为空,默认为true
2.blankText:string//当为空时的错误提示信息
具体代码如下
var form1 = new Ext.form.FormPanel({
width:350,
frame:true,
renderTo:"form1",
labelWidth:80,
title:"FormPanel",
bodyStyle:"padding:5px 5px 0",
defaults:{width:150,xtype:"textfield"}, //先用Ext.apply方法添加自定义的password验证函数(也可以取其他的名字)
//配置items参数
items:[
{
xtype:"textfield",
allowBlank:false,
fieldLabel:"邮箱",
vtype:"email",//email格式验证
blankText:"不能为空,请填写",
vtypeText:"不是有效的邮箱地址",//错误提示信息,默认值我就不说了
id:"blanktest",
anchor:"90%"
},
{ fieldLabel:"密码",
inputType:"password",
id:"pass1",
allowBlank:false,
blankText:'请输入密码',
anchor:"90%"
},
{
fieldLabel:"确认密码",
inputType:"password",
id:"pass2",
vtype:"password",//自定义的验证类型
vtypeText:"两次密码不一致!",
confirmTo:"pass1",//要比较的另外一个的组件的id
anchor:"90%"
}
],
buttons:[{text:'提交'},{text:'取消'}]
});
Ext.apply(Ext.form.VTypes,{
password:function(val,field){//val指这里的文本框值,field指这个文本框组件,大家要明白这个意思
if(field.confirmTo){//confirmTo是我们自定义的配置参数,一般用来保存另外的组件的id值
var pwd=Ext.get(field.confirmTo);//取得confirmTo的那个id的值
return (val==pwd.getValue());
}
return true;
}
});