2013-09-25 6 views
10

Sto usando il menu a discesa Multiselect bootstrap invece del numero di elenco che mostra quando l'opzione hit select all mostra il testo All Selected.Come modificare l'etichetta multiselect bootstrap anziché quella selezionata?

http://davidstutz.github.io/bootstrap-multiselect/

+1

post di qualche codice, cosa hai provato finora? – Pratik

+0

Ho provato a eseguire il debug ma sembra che usi jquery.js. Non sembra un contenuto personalizzato. Sembra sbagliato ma strano. Se riesci a capirlo prima delle 3 selezioni, puoi estenderlo a 4,5,6 naturalmente. – mithataydogmus

risposta

1

ho cambiato (accenno di pulsante: MultiSelect con un 'Seleziona tutti' opzione) 3 ° del pulsante ID per prova. Funziona ma è necessario aggiungere l'id al pulsante dagli strumenti di sviluppo (Chrome/Firefox aggiungi F12).

$('#test+ul>li').change(function(){ 
    $('#test').text($('#test').attr('title')); 
}); 

È possibile testarlo dopo aver aggiunto l'id. Si prega di utilizzare jsfiddle.net dopo. Puoi trovare aiuto più rapidamente.

15

Se qualcuno ha colpito questa domanda in futuro, la soluzione è cambiare la

{ nonSelectedText: 'None selected' } 

assegnare una variabile globale a questo testo cambiarlo tramite JavaScript.

valore risiede nel file bootstrap-multiselect.js.

+0

Sono contento di averlo fatto scorrere verso il basso, questo funziona perfettamente. Puoi impostare 'noneSelectedText' per ogni nuovo oggetto multiselect, se ne hai multipli. Grazie! –

+0

contento che abbia aiutato .. :) –

10

È possibile modificare "Etichetta" (di multiselect bootstrap) di testo per tutti e 4 i casi "nessun selezionati", "n selezionato", "All" "valori selezionati" selezionati o come segue:

JQuery

$('#level').multiselect({ 
    includeSelectAllOption: true, 
    maxHeight: 150, 
    buttonWidth: 150, 
    numberDisplayed: 2, 
    nSelectedText: 'selected', 
    nonSelectedText: 'None selected', 
    buttonText: function(options, select) { 
     var numberOfOptions = $(this).children('option').length; 
     if (options.length === 0) { 
     return nonSelectedText + ' <b class="caret"></b>'; 
     } 
     else{ 
      if (options.length > numberDisplayed) { 
       if(options.length === numberOfOptions){ 
        return ' All Selected' + ' <b class="caret"></b>'; 
       } 
       return options.length + ' ' + nSelectedText + ' <b class="caret"></b>'; 
      }else { 
       var selected = ''; 
       options.each(function() { 
        var label = ($(this).attr('label') !== undefined) ? 
                 $(this).attr('label'):$(this).html(); 
        selected += label + ', '; 
       }); 
       return selected.substr(0, selected.length - 2) + ' <b class="caret"></b>'; 
      } 
     } 
    } 
}); 

HTML

<select multiple="multiple" id="level"> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="opel">Opel</option> 
    <option value="audi">Audi</option> 
</select> 

funziona per me. Divertiti!

+0

In qualche modo la parte selezionata non funziona per me e rientra nella parte nSelezionata ... Fondamentalmente il options.length === numberOfOptions non funziona come dovrebbe, non so cosa può essere sbagliato .. hai qualche suggerimento? – Ekin

3

Utilizzare le opzioni oggetto iniziale.

$("#services").multiselect({ 
    nonSelectedText:'Services' 
}); 

Questa opzione ha funzionato per me.

+0

C'è un errore di battitura, la proprietà è chiamata 'nonSelectedText' –

3

uso dati-segnaposto

<select data-placeholder="Month"> 

questo lavoro per me.

+0

Sembra non funzionare affatto. Che versione stai usando? – mdrozdziel

1

La risposta di Philip ha funzionato per me, ma rendendola un po 'più completa, dovrebbe essere chiamata su documento pronto. Quindi la soluzione per me, compresa l'impostazione più elenchi era:

$(document).ready(function() { 
    $("#bedrooms").multiselect({ 
     nonSelectedText:'Bedrooms' 
    }); 
    $("#bathrooms").multiselect({ 
     nonSelectedText:'Bathrooms' 
    }); 
    $("#garages").multiselect({ 
     nonSelectedText:'Garages' 
    }); 
    $("#livingareas").multiselect({ 
     nonSelectedText:'Living Areas' 
    }); 
}); 
2

Dopo la official documentation:

allSelectedText è il testo visualizzato se sono selezionate tutte le opzioni. È possibile che disattivi la visualizzazione di allSelectedText impostandolo su falso.

uso opzione

{ 
... 
allSelectedText: false, 
... 
} 
+2

Quando si dà una risposta è preferibile dare [qualche spiegazione su PERCHÉ la risposta] (http://stackoverflow.com/help/how-to-answer) è quella giusta. –