2011-04-27 15 views
11

Tengo ComboBox. Cuando hago clic en el elemento de la lista expandida, ComboBox, seleccione este elemento y contraiga. Si hago clic en el elemento ya seleccionado, también se contrae.ExtJs 4, Cómo evitar que xtype: 'combo' se colapse cuando se hace clic en un elemento ya seleccionado?

¿Hay una manera de "parada"ComboBoxcolapsar cuando el usuario seleccione objeto ya seleccionado?

PS: Para ser breve quiero ComboBox a comportarse como TimeField de http://dev.sencha.com/deploy/ext-4.0.0/examples/themes/index.html

ACTUALIZACIÓN

No necesito soluciones que dosen't de trabajo por lo menos en IE7 e IE8 ..

+1

si no sabrá la respuesta, al menos vote por ella, para que otros puedan encontrar esta pregunta ... –

Respuesta

3

Si desea que el comportamiento:

Ext.form.field.ComboBox.override({ 
    onItemClick: Ext.emptyFn 
}); 
+0

Genial :) Pero esto no funciona en IE7, IE8 ... así que no puedo usar es ... –

+0

Y tampoco funciona en IE6 .. –

+0

¿Recibió un consejo de uno de los desarrolladores y le dijo que no funcionaba? Tal vez deberías echar un vistazo más de cerca a tu código. Puede extender o anular. Para solucionarlo, debes publicar el código que usaste en lugar del Ext.emptyFn – sra

4
var cb = new Ext.form.ComboBox({  
    // here is your local store 
    mode: 'local', 
    store: new Ext.data.SimpleStore({ 
     fields: ['id', 'label'], 
     data: [ 
      ['1', 'One'], 
      ['2', 'Two'] 
     ] 
    }),  
    listeners: { 
     'beforeselect': function (combo, record, index) { 
      // prevent collapsing if the same value is selected 
      if (record.data.label == combo.getRawValue()) return false; 
     } 
    } 
}); 
+0

Esta solución no funciona en ** ExtJs 4 ** .. –

+0

En 3.3.1 funciona, aún no lo he probado en 4. –

3

Si es 3.3 que está tratando, esto parece funcionar:

Ext.form.ComboBox.override({ 
    onSelect : Ext.form.ComboBox.prototype.onSelect.createInterceptor(function(record) { 
    return this.getValue() !== record.data[this.valueField || this.displayField]; 
    }) 
}); 

probado en Chrome y IE8. Impide que se llame a la función onSelect si el valor actual coincide exactamente con el valor que intenta establecer.

+0

Whoops, ExtJS 4. – wombleton

+0

La solución descrito por @Evan Trimboli funciona bien en IE8 para ExtJS 4. – wombleton

+0

no solo eso, funciona en IE6, 7 y 9 – sra

Cuestiones relacionadas