2013-09-25 18 views
10

Używam rozwijanej listy rozwijanej Multiselect zamiast numeru listy wyświetlanej po wybraniu opcji wybierz opcję Wszystkie możemy wyświetlić tekst Wszystkie zaznaczone.Jak zmienić etykietę wielodotykową bootstrap zamiast wybranych wszystkich?

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

+1

po jakiś kod, co próbowałeś do tej pory? – Pratik

+0

Próbowałem debugować, ale wydaje się, że używa on direclty jquery.js. Nie wygląda jak niestandardowa treść. Wygląda źle, ale dziwnie. Jeśli potrafisz rozgryźć przed 3 selekcji, możesz oczywiście rozszerzyć go do 4,5,6. – mithataydogmus

Odpowiedz

1

Zmieniłem 3rd Buttona (podpowiedź przycisku: wielokrotny z opcji 'Zaznacz wszystko') ID do testu. Działa, ale najpierw musisz dodać identyfikator do przycisku z narzędzi programistycznych (Chrome/Firefox dodaj F12).

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

Możesz przetestować po dodaniu identyfikatora. Następnie użyj jsfiddle.net. Możesz szybciej znaleźć pomoc.

15

Jeśli ktoś uderzył tę kwestię w przyszłości, rozwiązanie to zmienić

{ nonSelectedText: 'None selected' } 

przypisać zmienną globalną do tego tekstu zmienić go poprzez JavaScript.

Wartość:

znajduje się w pliku bootstrap-multiselect.js.

+0

Cieszę się, że przewinąłem w dół, to działa idealnie. Możesz ustawić "noneSelectedText" dla każdego nowego obiektu multiselect, jeśli masz wiele. Dzięki! –

+0

cieszę się, że pomógł .. :) –

10

można zmienić "etykieta" (z bootstrap wielokrotny) tekst dla wszystkich 4 przypadkach "żaden wybrany", "n wybrany", "All" Wybrane lub "Wybrane wartości" w następujący sposób:

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> 

To działa na mnie. Baw się dobrze!

+0

Jakoś wszystkie wybrane części nie działają dla mnie i wpadają w nWybrane części ... Zasadniczo options.length === numberOfOptions nie działa tak jak powinien, nie wiem co może być nie tak ... Czy masz jakieś sugestie? – Ekin

3

Użyj opcji init obj.

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

Ta opcja działa dla mnie.

+0

Istnieje literówka, właściwość nazywa się "nonSelectedText" –

3

użycie danych zastępczy

<select data-placeholder="Month"> 

To praca dla mnie.

+0

Nie wydaje się działać w ogóle. Jakiej wersji używasz? – mdrozdziel

1

Odpowiedź Philipa była dla mnie ważna, ale po prostu nieco bardziej kompletna, powinna zostać wezwana na gotowy dokument. Więc rozwiązanie dla mnie, w tym wyznaczanie wielu list było:

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

Po official documentation:

allSelectedText to tekst wyświetlany, gdy wybrane są wszystkie opcje. Ty można wyłączyć wyświetlanie allSelectedText, ustawiając go na false.

użycie opcji

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

Podczas udzielania odpowiedzi lepiej jest podać [wyjaśnienie, DLACZEGO twoja odpowiedź] (http://stackoverflow.com/help/how-to-answer) jest tą. –