日期:2014-05-16  浏览次数:20422 次

在ext的textfield里面直接用正则和利用js的vtype 进行比较 赞
今天在ext的textfield里面写了正则表达式来限制用户填写的东西
       例如面积强制要求面积由正数表达而且可以考虑到小数点,但是小数点后面的位数不能超过6位,一般我们都会考虑用正则表达式来进行限制

    例如:
    {xtype:'textfield',
     id:'storeArea',
     name: 'storeArea',
     fieldLabel: '仓库面积(平方米)',
     vtype:'area',
     regex:/^[0-9]+(.[0-9]{0,6})?$/,
     regexText:'用正数组成小数点后面不能超过6位',
      maxLength:24,
      anchor:'95%'}

      regex:/^[0-9]+(.[0-9]{0,6})?$/,
     regexText:'用正数组成小数点后面不能超过6位'
这样强加在textfield里面,这样肯定会有效果,不过这样也有一个不好的地方,就是你还是可以输入其它的东西,例如输入了一些英文字母进去,它可以让你进行输入,然后在提示你 '用正数组成小数点后面不能超过6位'

如果用了js的vtype 来进行判断,这样的话用户根本就填写不了初数字和小数点以外的东西进去, textfield根本就不接受这样东西的填入,

首先在js页面中 添加属性

    Ext.apply(Ext.form.VTypes, {
          //面积  限制小数点后的位数的限制,只能输入小数点后的6位  22.222222
	"area":function(_v){
		return  /^[0-9]+(.[0-9]{0,6})?$/.test(_v); //利用正则来和传进来的值进行判断
	},
	"areaText": "只能用正数组成小数点后面不能超过6位",  //用来提示的作用
	"areaMask":/[0-9\.]/i //只准用户填入 0-9 和 .  其他的就接受不了 
});

//在jsp页面中先调用js再直接调用 vtype("area")

//例如:
   {xtype:'textfield',
     id:'storeArea',
     name: 'storeArea',
     fieldLabel: '仓库面积(平方米)',
     vtype:'area',
      maxLength:24,
      anchor:'95%'}



可以将页面用的判断统一写在一个js里面 这样有利于系统的管理,使jsp页面也更加简洁
        
1 楼 jaystefanie 2011-01-21  
为啥不用numberfield