2013-08-14 18 views
10

Sto tentando di aggiungere una QuickTip a un campo modulo, ma non riesco a trovare un modo per far funzionare il mio codice. In primo luogo, ho provato ad utilizzare un attributo qtipExtJS 4: C'è un modo per allegare una QuickTip a un campo modulo?

{ 
     fieldLabel: 'Last Name', 
     qtip:'This tip is not showing at all', 
     name: 'last' 
    } 

e quindi utilizzando Ext.tip.ToolTip classe:

Ext.create('Ext.tip.ToolTip', { 
    target: 'rating_field', 
    anchor: 'right', 
    trackMouse: true, 
    html: 'This tip is not showing at all' 
}); 

Ext.QuickTips.init(); 

Qui è un jsfiddle con il codice sorgente: jsfiddle

risposta

21

Sì, utilizzare la configurazione inputAttrTpl e l'attributo data-qtip:

{ 
    fieldLabel: 'Last Name', 
    inputAttrTpl: " data-qtip='This is my quick tip!' ", 
    name: 'last' 
} 
+1

Con questo metodo non c'è indicatore ottico ciò dimostra che il campo modulo fornisce un suggerimento rapido. C'è un modo semplice per aggiungere un'icona se è presente un suggerimento? – user2345998

+0

Non credo che ci sia un modo molto semplice, ma potresti aggiungere un po 'di CSS per cambiare il bordo del campo o qualcosa con l'opportuna opzione di configurazione – Reimius

+3

che sembra seriamente brutta. Perché non possono semplicemente avere "qTip: 'my quicktip'" ... meh –

6

ho trovato la risposta qui: How should I add a tooltip to an ExtJS Component?

{ 
     fieldLabel: 'Last Name', 
     qtip: "This is a tip", 
     name: 'last', 
     listeners: { 
      render: function(c) { 
       Ext.QuickTips.register({ 
        target: c.getEl(), 
        text: c.qtip 
       }); 
      } 
     } 
    } 
+3

Per chiarire. Vorrei sottolineare che mentre questo funziona, è solo un modo indiretto per fare la stessa cosa. Tutto quello che si registra con "Ext.QuickTips.register" fa aggiungere l'attributo data-qtip all'html. L'unica vera ragione per usare questo modo è invece se si vuole un modo più semplice per sfuggire a html con qtips creati dinamicamente. – Reimius

4

Utilizzando vero4ka's answer ho scritto un semplice plugin che può essere utilizzato con i moduli per consentire QuickTips sui campi del bambino.

Ext.define('Ext.form.QtipPlugin', { 
    extend: 'Ext.AbstractPlugin', 

    alias: 'plugin.qtipfields', 

    init: function (cmp) { 
     this.setCmp(cmp); 

     cmp.on('beforerender', function() { 

      var fields = cmp.query('field[qtip]'); 

      for (var i = 0; i < fields.length; i++) { 

       fields[i].on('render', this.register, this); 

      } 

     }, this); 
    }, 

    register: function (field) { 
     var obj = { 
      target: field.id 
     }; 

     if (typeof field.qtip === 'string') { 
      obj.text = field.qtip; 
     } else if (typeof field.qtip === 'object') { 
      // Allow qtip configuration objects. 
      // i.e. qtip: { text: 'hi', ... } 
      Ext.applyIf(obj, field.qtip); 
     } 

     Ext.tip.QuickTipManager.register(obj); 
    } 
}); 
3

Per ogni campo di modulo, è possibile utilizzare questo:

{ 
    xtype: 'textfield', // or anything else 
    autoEl: { 
     'data-qtip': 'This tip is not showing at all' 
    } 
} 
+0

Questo ha funzionato per aggiungere un suggerimento a un elemento di radiogroup. '{boxLabel: 'Flat Rate', nome: 'rate_type', inputValue: 1, autoEl: {'data-qtip': 'Una velocità indipendentemente dall'utilizzo.'}},' – Quixrick

0

Se si sta generando tooltip dinamico quindi è possibile utilizzare sotto frammento:

txtFieldName.el.set({ "data-qtip": Ext.String.htmlDecode("Some Text") });