Extjs 4.1 - 禁用文本字段的粘贴事件

时间:2013-12-31 08:56:35

标签: javascript extjs extjs4.1 textfield

我已经确认extjs 4.1中没有textfield的粘贴事件。但我不希望用户应该能够粘贴到这个文本域。还有哪些其他选项可供用户不允许在文本字段中粘贴任何值。请注意,textfield只允许使用数字值,不允许使用字符/特殊字符或字母。以下是我目前的代码片段。

{
                                  xtype:"textfield",    
                                  fieldLabel: 'Debit Account',
                                  name:'debitAccount',
                                  id : 'debitacct',
                                  enableKeyEvents:true,
                                  maskRe: /[0-9]/,
                                  allowBlank: false,
                                  allowNegative: false,
                                  maxLength: 9,
                                  enforceMaxLength:true,
                                  listeners : {
                                    specialkey : function(field, e) {
                                    filterBackspaceKey(e);
                                    }
                                    }
                             }

感谢任何帮助。

3 个答案:

答案 0 :(得分:6)

在我看到@Sencha链接后,解决方案很简单。代码如下。

{
                                  xtype:"textfield",    
                                  fieldLabel: 'Debit Account',
                                  name:'debitAccount',
                                  id : 'debitacct',
                                  enableKeyEvents:true,
                                  maskRe: /[0-9]/,
                                  allowBlank: false,
                                  allowNegative: false,
                                  maxLength: 9,
                                  enforceMaxLength:true,
                                  listeners : {
                                    specialkey : function(field, e) {
                                    filterBackspaceKey(e);
                                    },
                                    paste: {
                                        element: 'inputEl',
                                        fn: function(event, inputEl) {
                                        if(event.type == "paste"){
                                        event.preventDefault();
                                        return false;
                                        }
                                        }
                                    }
                                    }
                             }

参考Sencha的链接:http://www.sencha.com/forum/showthread.php?175253-Paste-event

答案 1 :(得分:1)

  • 在任何点击和keydown上执行此操作:
    • 检查旧值是否等于新值(更改事件)
    • 将新值保存到旧值
    • 如果内容已更改,您可以区分值,如果更改的部分超过一个字符,则已粘贴内容 - >恢复旧值

希望有所帮助。

答案 2 :(得分:0)

将听众改为下面后尝试

listeners : {
                change : function(field, newValue,oldValue) {
                    var validation=/^\d+$/;
                    if(!validation.test(newValue) && newValue!='' ) {
                        field.setValue(oldValue);
                    }
                }
            }