2016-06-24 2 views
0

J'ai un composant TextFiled, où ajouter un déclencheur clair. comme celui-ci:extjs focus twinText lorsque vous cliquez sur le déclencheur

this.config.triggers = { 
     clear: { 
      cls : (Ext.baseCSSPrefix + 'form-clear-trigger'), 
      handler : function() { 
       this.setValue();     
      } 
     } 

    } 

... , et je gérer un événement concentrer

this.text= Ext.create('TwinText', { 
     width: 400, 
     emptyText: 'dddd', 
     listeners: { 
      scope: this, 
      focus: this.show,    
     }, 
     editable : false 
    }); 

Maintenant, quand je clique sur déclencheur propre, l'événement de mise au point a été congédié. Comment puis-je suspendre cela?

+0

L'événement focus est déclenché avant le clic du déclencheur, il n'est donc pas possible d'empêcher le focus sur le combo lorsque le déclencheur (à l'intérieur de combo) est cliqué. Vous pouvez empêcher la mise au point en réglant "focusable: false" sur le combo mais l'événement focus ne sera jamais déclenché. Quel est votre cas d'utilisation? Mon idée est que vous écoutez pour l'événement wring "focus". –

+0

Après avoir cliqué sur TextFiled, je voudrais ouvrir une fenêtre (panneau), mais TextField n'a aucun événement 'click' et c'est pourquoi j'utilise focus –

Répondre

1

Vous pouvez ajouter l'événement click à votre composant Textfield au lieu d'utiliser le focus.

Ex. dans la définition TwinText ajouter:

initEvents: function() { 
    this.callParent(arguments); 
    this.mon(this.inputEl, 'click', this.onClick, this); 
}, 

onClick: function (e) { 
    this.fireEvent('click', this, e); 
} 

puis d'écouter l'événement "click" au lieu de "focus".