如何在文本字段上进行验证,在粘贴到ext js时不允许使用字符?
我正在使用maskRe:/ [0-9] /。
在输入值时使用此值仅允许数字
但是粘贴时它允许角色。
答案 0 :(得分:1)
在Ext JS 3.4中,您必须通过自定义代码对其进行管理。您可以执行此操作,当您从字段中删除焦点时,它会删除文本。
blur: function (field) {
if (isNaN(field.getRawValue())) {
this.reset();
}
}
答案 1 :(得分:0)
也许你可以检查"模糊"的输入值。事件:
myTextField.on('blur', function (component) {
if (!component.isValid()) {
// Do what you need to do, maybe clear the TextField ?
}
})
答案 2 :(得分:0)
我不知道它是否适用于3.4.1。但我们在4.2版本中使用了以下代码。
我们使用了render
&文本字段的change
事件,以实现此目的。
我们使用render
来捕获其DOM元素&的粘贴事件。将字段类型设置为onpaste
。
我们使用了change
&检查类型是否为onpaste
。然后我们提取了maskRe
字段&使用replace()
根据maskRe
这是 working example 。
Ext.application({
name : 'Fiddle',
launch : function() {
Ext.create('Ext.form.Panel', {
title: 'Contact Info',
width: 300,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [{
xtype: 'textfield',
name: 'name',
fieldLabel: 'Telephone No.',
maskRe:/[0-9]/,
allowBlank: false,
listeners: {
render: function (field) {
field.getEl().on('paste', function () {
this.type = 'onpaste';
}, field);
},
change:function(field){
if (field.type == 'onpaste' && field.maskRe) {
field.type = null;
var regex = new RegExp(field.maskRe.toString().replace('/[', '[^').replace(']/', ']').replace('[^^', '['), 'g');
field.setValue(field.getValue().replace(regex, ''));
}
}
}
}]
});
}
});
对于Ext 3.4.1,我们可以使用以下代码。但它仅在模糊后删除不需要的字符。
Ext.onReady(function () {
Ext.QuickTips.init();
// turn on validation errors beside the field globally
Ext.form.Field.prototype.msgTarget = 'side';
var bd = Ext.getBody();
var simple = new Ext.FormPanel({
labelWidth: 75, // label settings here cascade unless overridden
frame: true,
title: 'Simple Form',
bodyStyle: 'padding:5px 5px 0',
width: 350,
defaults: { width: 230 },
defaultType: 'textfield',
items: [{
fieldLabel: 'Telphone No.',
name: 'telephone',
maskRe: /[0-9]/,
allowBlank: false,
listeners: {
render: function (field) {
field.getEl().on('paste', function () {
this.type = 'onpaste';
}, field);
},
change: function (field) {
if (field.type == 'onpaste' && field.maskRe) {
field.type = null;
var regex = new RegExp(field.maskRe.toString().replace('/[', '[^').replace(']/', ']').replace('[^^', '['), 'g');
field.setValue(field.getValue().replace(regex, ''));
}
}
}
}]
});
simple.render(document.body);
});