2013-08-14 11 views
10

Próbuję dodać QuickTip do pola formularza, ale nie mogę znaleźć sposobu, aby mój kod działał. Po pierwsze, próbowałem użyć atrybutu qtipExtJS 4: Czy istnieje sposób na dołączenie QuickTip do pola formularza?

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

a następnie za Ext.tip.ToolTip Klasa:

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

Ext.QuickTips.init(); 

Oto jsfiddle z kodem źródłowym: jsfiddle

Odpowiedz

21

Tak, użyj config inputAttrTpl i atrybut data-qtip:

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

Dzięki tej metodzie nie ma wskaźnika optycznego to pokazuje, że pole formularza zapewnia szybką wskazówkę. Czy istnieje prosty sposób dodania ikony, jeśli pojawia się szybka wskazówka? – user2345998

+0

Nie wierzę, że istnieje bardzo prosty sposób, ale można dodać trochę CSSów, aby zmienić granicę pola lub coś z odpowiednią opcją konfiguracyjną – Reimius

+3

, która wygląda poważnie brzydko. Dlaczego nie mogą po prostu "qTip:" mój quicktip "" ... meh –

6

znalazłem odpowiedź tutaj: 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

Aby wyjaśnić. Chciałbym zaznaczyć, że podczas gdy to działa, jest to okrężny sposób na zrobienie tego samego. Każda rejestracja za pomocą "Ext.QuickTips.register" powoduje dodanie atrybutu data-qtip do html. Jedynym prawdziwym powodem, aby użyć tej metody, jest łatwiejszy sposób na uniknięcie html z dynamicznie tworzonymi qtipsami. – Reimius

4

Korzystanie vero4ka's answer Napisałem prosty plugin, który może być używany z form, aby umożliwić quicktips na polach potomnych.

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

Dla każdego pola formularza, można użyć to:

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

To działało, aby dodać końcówkę do elementu grupy radiologicznej. '{boxLabel: 'Flat Rate', nazwa: 'rate_type', inputValue: 1, autoEl: {'data-qtip':" Jedna stawka niezależnie od użycia. "}},' – Quixrick

0

Jeśli generowania podpowiedzi dynamicznie wówczas można skorzystać z poniższego fragmentu:

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