Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的侦听器不能在extjs上工作?_Javascript_Extjs - Fatal编程技术网

Javascript 为什么我的侦听器不能在extjs上工作?

Javascript 为什么我的侦听器不能在extjs上工作?,javascript,extjs,Javascript,Extjs,这是代码,我也希望onPaste事件,而不是单击,但没有任何工作 var mpan0 = new Ext.form.TextField({ name:'mpan[]' , value:0 , allowblank:false , enableKeyEvents:true , fieldLabel:'Mpan', maxLength:2, width:35 }); mpan0.addListener('click', funct

这是代码,我也希望onPaste事件,而不是单击,但没有任何工作

var mpan0 = new Ext.form.TextField({
    name:'mpan[]' ,
    value:0 , 
    allowblank:false , 
    enableKeyEvents:true ,
    fieldLabel:'Mpan',
    maxLength:2,
    width:35
    });

mpan0.addListener('click', function(){ 
    alert( "amiy");
});
ExtJs使用on,因此应该是

mpan0.on("click", function(){
    alert("amiy");
});
但您也可以声明性地添加它

var mpan0 = new Ext.form.TextField({
    name:'mpan[]' ,
    value:0 , 
    allowblank:false , 
    enableKeyEvents:true ,
    fieldLabel:'Mpan',
    maxLength:2,
    width:35,
    listeners: {
        "click": function() {
            alert("amiy");
        }
    }
});

Ext.form.TextField没有“单击”事件。您可以在以下位置查看它支持的事件:

我能想到的最接近你所寻求的是“聚焦”事件

如果确实必须有一个单击事件,则可以尝试将侦听器附加到字段对象的基本DOM元素:

Ext.form.TextField({
    listeners: {
        afterrender: function( field ) {
            field.getEl().on('click', function( event, el ) {
                 // do something on click
            });
        }
    }
});
然而,我不能说我知道这会有多成功

有关Ext.Element单击事件的文档可在以下位置找到:


这是可行的。

然后还有其他问题-上面的代码是正确的。你试过调试器吗?顺便说一句,on和addListener是一样的..嗨,我不知道如何使用调试器,我也尝试了你的代码,我不知道它在任何情况下都不工作,我想我们必须找到需要设置的变量,以便在单击时激活,或者有一个由owlness给出的有效答案,也许你可以建议更好的代码,或者你从中得到了一些东西,即使点击字段标签,这个监听器也会被触发。您应该像这样将事件绑定到内部的输入元素:var inputElement=field.getEl.down'input';即使这样,单击字段标签也可以在输入字段本身上触发click事件,这就是为什么您应该像这样使用mousedown事件:inputElement.on{mousedown:function{/。。
yourtextfield = new Ext.form.TextField({
    id:'yourtextfield ',
    readOnly : true,
    listeners: {'render': function(cmp) { 
      cmp.getEl().on('click', function( event, el ) {
      alert("You click text field");
      });            
    }}        
});