1.限制输入长度
Ext.form.TextField 的 maxLength/size 处理的并不是很好,设置了maxLength后还是可以任意输入,国外extjs论坛看到有人的帖子,通过prototype重定义这两个属性,试了一下,很有效
Ext.form.TextField.prototype.size = 20;
Ext.form.TextField.prototype.initValue = function() {
if (this.value !== undefined) {
this.setValue(this.value);
} else if (this.el.dom.value.length > 0) {
this.setValue(this.el.dom.value);
}
this.el.dom.size = this.size;
if (!isNaN(this.maxLength) && (this.maxLength * 1) > 0
&& (this.maxLength != Number.MAX_VALUE)) {
this.el.dom.maxLength = this.maxLength * 1;
}
};
上面的js放在ext-all.js的引用之后就可以了,然后再指定maxLength属性就能控制输入长度
2.限制输入内容
参考了numberfield源码,以下控制TextField只能输入数字
var keyPress = function(e) {
var allowed = '0123456789';
var k = e.getKey();
if (!Ext.isIE && (e.isSpecialKey() || k == e.BACKSPACE || k == e.DELETE)) {
return;
}
var c = e.getCharCode();
if (allowed.indexOf(String.fromCharCode(c)) === -1) {
e.stopEvent();
};
}
在form窗体加载的事件里加入
Ext.getCmp('aMeteraddress').getEl().on('keypress', keyPress, this);
则该TextField只能输入数字