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

Javascript Extjs 4.1-禁用文本字段的粘贴事件,javascript,extjs,extjs4.1,textfield,Javascript,Extjs,Extjs4.1,Textfield,我已经验证了extjs 4.1中没有textfield的粘贴事件。但我不希望用户能够粘贴到这个文本字段中。还有哪些其他选项不允许用户在文本字段中粘贴任何值。请注意,文本字段只允许数字值,不允许字符/特殊字符或字母。下面是我现在拥有的代码片段 { xtype:"textfield", fieldLabel: 'Debit Account',

我已经验证了extjs 4.1中没有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);
                                    }
                                    }
                             }
感谢您的帮助。

  • 在任意单击并按下键时,执行以下操作:
    • 检查旧值是否等于新值(更改事件)
    • 将新值保存为旧值
    • 如果内容已更改,则可以区分值,如果更改的部分不止一个字符,则内容已粘贴->还原为旧值
希望有帮助。

  • 在任意单击并按下键时,执行以下操作:
    • 检查旧值是否等于新值(更改事件)
    • 将新值保存为旧值
    • 如果内容已更改,则可以区分值,如果更改的部分不止一个字符,则内容已粘贴->还原为旧值

希望这能有所帮助。

在我看到@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的链接:

在我看到@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的链接:

将您的侦听器更改为以下内容后重试

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

尝试将您的侦听器更改为以下

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

谢谢@Lex Podgorny的回复。在谷歌搜索了一点之后,我确实发现了一个粘贴事件,ref@SKS使用粘贴事件的答案不应该是正确的吗?@carcel,没错。粘贴事件是最好的选择。感谢@Lex Podgorny的回复。在谷歌搜索了一点之后,我确实发现了一个粘贴事件,ref@SKS使用粘贴事件的答案不应该是正确的吗?@carcel,没错。粘贴事件是可用的最佳选项。我正在寻找粘贴事件而不是更改。无论如何,谢谢你的密码。请检查我的代码作为解决方案。我正在寻找粘贴事件,而不是更改。无论如何,谢谢你的密码。请检查我的代码作为解决方案。@dbrin我的错,谢谢!我刚刚接受了。@dbrin我的错,谢谢!我刚刚接受了。