如何在文本字段上进行验证,在粘贴到ext js时不允许使用字符

时间:2015-09-21 09:19:39

标签: extjs

如何在文本字段上进行验证,在粘贴到ext js时不允许使用字符?

我正在使用maskRe:/ [0-9] /。
在输入值时使用此值仅允许数字 但是粘贴时它允许角色。

3 个答案:

答案 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);


});