5

Come posso impedire la chiusura di un file di esempio quando si seleziona un elemento? Ho provato a utilizzare preventDefault come questo:Prevenire il menu a discesa typeahead.js dalla chiusura selezionare

$('#q').bind('typeahead:selected',function(obj, datum, name) { 
      ... 
      obj.preventDefault(); 
     }); 

Ma nessun successo.

Edit: sono riuscito a "fissare" questo costruendo typeahead con le linee 217-218 commentate da typeahead_views.js:

byClick && utils.isMsie() ? 
     utils.defer(this.dropdownView.close) : this.dropdownView.close(); 

Ma ci deve essere un altro modo senza modificare i file di origine?

risposta

0

Attiva la messa a fuoco dell'ingresso sul callback chiuso.

$('#typeahead-input').on('typeahead:closed', function(e, d) { 
     $('#typeahead-input').focus(); 
    }); 
+0

Trovo che questo chiuda ancora il menu a discesa. –

0

sto lavorando su typeahead all'interno tokenfield così la prima parte è me accedere all'oggetto Typeahead.dropdown, che di per sé ha preso un po 'di caccia.

Provato a giocare con isOpen o sovrascrivendo le funzioni close, alla fine più vicino che ho ottenuto era questo. Abbattere lo smistamento degli eventi. Dovresti reimplementare qualsiasi salvataggio di valori ecc, in pratica le prime 3 righe di Typeahead.select.

Io stesso sono stato bloccato per poter inserire un modulo (il fuoco rimane nel campo di input) nel menu a discesa e ancora un po 'di caccia se dovessi mettere qualcosa di interattivo lì. Penso che andrò su una soluzione roll-your-own su questo, ma potrebbe aiutare qualcuno che vuole solo bloccare la chiusura, mettere la funzione originale in una var per rimetterla al suo posto quando hai finito.

$('input[id="test"]').data('bs.tokenfield') 
    .$input.data('ttTypeahead').dropdown.trigger = function(e) {}; 

Anche questo ha il potenziale:

$('input[id="test"]').data('bs.tokenfield') 
    .$input.data('ttTypeahead').eventBus.trigger = function(e) {}; 
0

Un modo più semplice:

 input.data('tt-typeahead')._selectOld = input.data('tt-typeahead')._select 
    input.data('tt-typeahead')._select = function(datum) { 
     if (false) 
     this._selectOld(datum) 
    } 
0

avuto lo stesso problema e la soluzione (molto facile) non sembra essere documentato da

$(document).on('typeahead:beforeclose', function(event, data) { 
    event.preventDefault() 
}) 

(questo impedisce solo al dr a partire dalla chiusura del tutto che può essere molto utile durante lo sviluppo, utilizzare 'typeahead:beforeselect' se si desidera impedire la chiusura solo su selet).