2016-04-26 7 views

risposta

2

Finalmente ho trovato un bug nei Select2 4.0.2.

La soluzione è presente, in select2.js, linea 1760.

Questo deve essere sostituita:

this.$element.val(this.placeholder.id).trigger('change'); 

this.trigger('toggle', {}); 

By:

this.$element.val(this.placeholder.id).text(this.placeholder.text).trigger('change'); 

//this.trigger('toggle', {}); 

Questa soluzione fa sì che anche la discesa non per apparire quando la selezione è cancellata.

+0

Amico. Sei forte! Questo è stato il problema per me e la correzione aggiuntiva per non mostrare il menu a discesa quando è stata cancellata, mi ha anche salvato da quello. Complimenti –

3

No, non è un bug. L'icona "X" richiede l'opzione segnaposto. Senza di esso, l'opzione clearAllow non può essere utilizzata. Quindi, il codice a destra sarà così:

$(".js-example-placeholder-single").select2({ 
    placeholder: "Put some text...", 
    allowClear : true 
}); 

A proposito, v'è un'opzione non documentata chiamato di debug. Se lo si passa al metodo select2(), gli errori trovati verranno stampati sulla console. Ad esempio di codice in seguito:

$(".js-example-placeholder-single").select2({ 
    //placeholder: "Put some text...", 
    allowClear : true, 
    debug: true 
    }); 

andranno in console del browser:

allowCreate requires placeholder option

Perché allowClear richiede l'opzione segnaposto?

Il vero menù a tendina, che si crea con <select> e <option> elementi nasconde da select2. E creato uno nuovo.

Nel nuovo elenco a discesa creato, il campo visualizzato dall'utente (senza elenco a discesa) creato automaticamente. Ogni volta che si seleziona la nuova opzione, select2 cambierà il campo precedente con uno nuovo.

Quando si fa clic sull'icona X, si elimina anche il campo principale. E crea un nuovo campo con parametri di segnaposto.

+0

Dovrebbero scrivere questo nella documentazione con BIG BOLD lettere prima riga! – ptheofan

0

Nel mio caso, il pulsante di cancellazione non funziona anche se l'opzione segnaposto è impostata. Devo aggiungere la proprietà z-index:

.select2-container .select2-selection--single .select2-selection__rendered { 
    z-index:1; 
}