ExtJS::如何添加特定的"specialkey事件”;表示逗号到数字字段

ExtJS:: How to add specific "specialkey event" for comma to numberfield?

本文关键字:事件 specialkey 表示 字段 数字 quot 何添加 添加 ExtJS      更新时间:2023-11-02

如果要我的nummerfield取",",并在键向上时将其转换为"."。Numberfield不允许在其中输入","。我想手动处理"specialkey"并添加"."。但是","并不是特别的键。如何在那里添加?

specialkey: function(field, e){
              // e.HOME, e.END, e.PAGE_UP, e.PAGE_DOWN,
              // e.TAB, e.ESC, arrow keys: e.LEFT, e.RIGHT, e.UP, e.DOWN
              if (e.getKey() == e.TAB) {
                    //Do specific action
              }
        }

如果要将","转换为"。"在key up上,为什么要用specialkey事件来处理它?为什么不使用"keyup"事件?

这里有一个例子:

Ext.create ('Ext.window.Window', {
    renderTo: Ext.getBody () ,
    width: 300 ,
    height: 150 ,
    title: 'It works!' ,
    items: [{
        xtype: 'numberfield' ,
        enableKeyEvents: true ,
        fieldLabel: 'Age' ,
        listeners: {
            keyup: function (nf, evt) {
                // 188 is ','
                if (evt.getKey () == 188) {
                    nf.setRawValue (nf.getRawValue () + '.');
                }
            }
        }
    }]
}).show ();

否则,您可以使用disableKeyFilter属性来允许用户插入特殊字符,如&*%等,然后找到一种方法将","替换为"。"

顺便说一句,如果您想用specialkey事件处理",",这里有一个技巧:

Ext.create ('Ext.window.Window', {
    renderTo: Ext.getBody () ,
    width: 300 ,
    height: 150 ,
    title: 'It works!' ,
    items: [{
        xtype: 'numberfield' ,
        enableKeyEvents: true ,
        fieldLabel: 'Age' ,
        listeners: {
            keyup: function (nf, evt) {
                // 188 is ','
                if (evt.getKey () == 188) {
                    // Fire 'specialkey' up passing ','
                    nf.fireEvent ('specialkey', nf, evt);
                }
            } ,
            specialkey: function (nf, evt) {
                // Here we are!
                alert (evt.getKey ());
            }
        }
    }]
}).show ();