轉(zhuǎn)自:http://lbyzx123.iteye.com/blog/1143556
新建一個(gè)文件,在文件內(nèi)插入如下內(nèi)容:
Ext.apply(Ext.form.field.VTypes,
{
//首先定義一個(gè)vtype名稱,和他的驗(yàn)證函數(shù),val參數(shù)是文本框的值,field是文本框。一般我就使用val和正則表達(dá)式比較就OK了。
//然后定義一個(gè)vtype的報(bào)錯(cuò)信息,與vtype名稱加Text后綴。OK了。
passwd: function(val, field)
{
if (field.initialPassField)
{
var pwd = Ext.getCmp(field.initialPassField);
return (val == pwd.getValue());
}
return true;
},
passwdText: '兩次輸入的密碼不一致!',
chinese:function(val,field)
{
var reg = /^[\u4e00-\u9fa5]+$/i;
if(!reg.test(val))
{
return false;
}
return true;
},
chineseText:'請(qǐng)輸入中文',
age:function(val,field)
{
try
{
if(parseInt(val) >= 18 && parseInt(val) <= 100)
return true;
return false;
}
catch(err)
{
return false;
}
},
ageText:'年齡輸入有誤',
alphanum:function(val,field)
{
try
{
if(!/\W/.test(val))
return true;
return false;
}
catch(e)
{
return false;
}
},
alphanumText:'請(qǐng)輸入英文字母或是數(shù)字,其它字符是不允許的.',
url:function(val,field)
{
try
{
if(/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(val))
return true;
return false;
}
catch(e)
{
return false;
}
},
urlText:'請(qǐng)輸入有效的URL地址.',
max:function(val,field)
{
try
{
if(parseFloat(val) <= parseFloat(field.max))
return true;
return false;
}
catch(e)
{
return false;
}
},
maxText:'超過最大值',
min:function(val,field)
{
try
{
if(parseFloat(val) >= parseFloat(field.min))
return true;
return false;
}
catch(e)
{
return false;
}
},
minText:'小于最小值',
datecn:function(val,field)
{
try
{
var regex = /^(\d{4})-(\d{2})-(\d{2})$/;
if(!regex.test(val)) return false;
var d = new Date(val.replace(regex, '$1/$2/$3'));
return (parseInt(RegExp.$2, 10) == (1+d.getMonth())) && (parseInt(RegExp.$3, 10) == d.getDate())&&(parseInt(RegExp.$1, 10) == d.getFullYear());
}
catch(e)
{
return false;
}
},
datecnText:'請(qǐng)使用這樣的日期格式: yyyy-mm-dd. 例如:2008-06-20.',
integer:function(val,field)
{
try
{
if(/^[-+]?[\d]+$/.test(val))
return true;
return false;
}
catch(e)
{
return false;
}
},
integerText:'請(qǐng)輸入正確的整數(shù)',
minlength:function(val,field)
{
try
{
if(val.length >= parseInt(field.minlen))
return true;
return false
}
catch(e)
{
return false;
}
},
minlengthText:'長度過小',
maxlength:function(val,field)
{
try
{
if(val.length <= parseInt(field.maxlen))
return true;
return false;
}
catch(e)
{
return false;
}
},
maxlengthText:'長度過大',
ip:function(val,field)
{
try
{
if((/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(val)))
return true;
return false;
}
catch(e)
{
return false;
}
},
ipText:'請(qǐng)輸入正確的IP地址',
phone:function(val,field)
{
try
{
if(/^((0[1-9]{3})?(0[12][0-9])?[-])?\d{6,8}$/.test(val))
return true;
return false;
}
catch(e)
{
return false;
}
},
phoneText:'請(qǐng)輸入正確的電話號(hào)碼,如:0920-29392929',
mobilephone:function(val,field)
{
try
{
if(/(^0?[1][35][0-9]{9}$)/.test(val))
return true;
return false;
}
catch(e)
{
return false;
}
},
mobilephoneText:'請(qǐng)輸入正確的手機(jī)號(hào)碼',
alpha:function(val,field)
{
try
{
if( /^[a-zA-Z]+$/.test(val))
return true;
return false;
}
catch(e)
{
return false;
}
},
alphaText:'請(qǐng)輸入英文字母',
money:function(val,field)
{
try
{
if(/^\d+\.\d{2}$/.test(val))
return true;
return false;
}
catch(e)
{
return false;
}
},
moneyText:'請(qǐng)輸入正確的金額'
});
在頁面引入上面新建的文件,在相應(yīng)界面的組件中定義vtype,即可進(jìn)行有限驗(yàn)證。
引用示例代碼:
//構(gòu)建一個(gè)密碼Form
var pwd = new Ext.form.Panel({
labelWidth: 125,
frame: true,
title: '密碼驗(yàn)證框',
width: 350,
renderTo : 'pw',
allowDomMove : true,
draggable : true,
defaults: {
width: 175,
inputType: 'password'
},
defaultType: 'textfield',
items: [{
fieldLabel: '密碼:',
name: 'pass',
id: 'pass'
},{
fieldLabel: '密碼確認(rèn):',
name: 'pass-cfrm',
vtype: 'passwd',
initialPassField: 'pass'
}]
});
其中,initialPassField是自定義的屬性,記錄上一個(gè)password的id,然后在VType的驗(yàn)證函數(shù)中取出上一個(gè)password組件的值,進(jìn)行比較。
記住:上一個(gè)password必須設(shè)置id屬性。
posted on 2011-11-04 11:25
Ke 閱讀(753)
評(píng)論(0) 編輯 收藏 所屬分類:
extJs