Ich habe eine einfache HTML Multi Select Dropdown-Liste:
<select id="transactionType" multiple="multiple" size="10">
<option value="ALLOC">ALLOC</option>
<option value="LOAD1">LOAD1</option>
<option value="LOAD2">LOAD2</option>
<!-- etcetera... -->
</select>
Ich möchte diese Liste weiterhin verwenden, falls Javascript deaktiviert ist. Mit JavaScript möchte ich die Liste jedoch als Dropdown-Liste mit Mehrfachauswahl rendern. Das heißt, es wird nur ein Element in der Liste angezeigt, bis darauf geklickt wird, und es wird dann erweitert, um x Elemente anzuzeigen und einen Bildlauf durchzuführen, in dem ich mehrere Elemente auswählen kann, wie Sie es erwarten würden, während Sie die Umschalt- oder Strg-Taste gedrückt halten.
Neu bei jQuery war die Suche nach http://jquery.com/ , aber ich habe noch nicht gefunden, was ich brauche.
Bearbeiten von Struts2-Benutzern. Die ausgewählte Antwort wird mit [] url-codiert. Dies führt zu Problemen in Struts2. Die Fehlerbehebung ist jedoch sehr einfach. Öffnen Sie einfach jquery.multiSelect.js und suchen Sie nach "[]" und löschen Sie die Instanz, die in einer Zeichenfolgenverkettung verwendet wird. Ich benutze auch jQuery 1.4.4 im Gegensatz zu der 1.3.2, die mitgeliefert wurde und alles funktioniert einwandfrei.
Update (2017): Die folgenden zwei Bibliotheken sind jetzt die am häufigsten mit Javascript verwendeten Dropdown-Bibliotheken. Obwohl sie jQuery-native sind, wurden sie so angepasst, dass sie mit AngularJS 1.x und benutzerdefiniertem CSS für Bootstrap funktionieren. (Ausgewählter JS, die ursprüngliche Antwort hier, scheint an Popularität auf # 3 gefallen zu sein.)
Obligatorische Screenshots unten.
Originale Antwort (2012) : Ich denke, dass die gewählte Bibliothek auch nützlich sein könnte. Es ist in den Versionen jQuery, Prototype und MooTools verfügbar.
Anbei sehen Sie einen Screenshot, wie die Mehrfachauswahlfunktion in Ausgewählt aussieht.
Ich war auch auf der Suche nach einem einfachen Multi Select für mein Unternehmen. Ich wollte etwas Einfaches, sehr anpassbares und ohne große Abhängigkeiten anderes als jQuery.
Ich habe keinen gefunden, der meinen Bedürfnissen entspricht, und habe mich daher dazu entschlossen, meinen eigenen Code zu erstellen.
Ich benutze es in der Produktion.
Hier sind einige Demos und Dokumentationen: loudev.com
Wenn Sie einen Beitrag leisten möchten, überprüfen Sie das Github-Repository
Laden Sie jquery.multiselect herunter
Schließen Sie die Dateien jquery.multiselect.js und jquery.multiselect.css ein
<script src="jquery-ui-multiselect-widget-master/src/jquery.multiselect.js" type="text/javascript"></script> <link rel="stylesheet" href="jquery-ui-multiselect-widget-master/jquery.multiselect.css" />
Füllen Sie Ihren ausgewählten Eingang aus
Fügen Sie die Mehrfachauswahl hinzu
$('#' + Field).multiselect({ checkAllText: "Your text for CheckAll", uncheckAllText: "Your text for UncheckCheckAll", noneSelectedText: "Your text for NoOptionHasBeenSelected", selectedText: "You selected # of #" //The multiselect knows to display the second # as the total });
Sie können den Stil ändern
ui-multiselect { //The button background:#fff !important; //background-color wouldn't work here text-align: right !important; } ui-multiselect-header { //The CheckAll/ UncheckAll line) background: lightgray !important; text-align: right !important; } ui-multiselect-menu { //The options text-align: right !important; }
Wenn Sie die Auswahl erneut füllen möchten, müssen Sie sie aktualisieren:
$('#' + Field).multiselect('refresh');
So erhalten Sie die ausgewählten Werte (durch Kommas getrennt):
var SelectedOptions = $('#' + Field).multiselect("getChecked").map(function () { return this.value; }).get();
So löschen Sie alle ausgewählten Werte:
$('#' + Field).multiselect("uncheckAll");
Schauen Sie sich erichynds dropdown multiselect mit einer Vielzahl von Einstellungen und Abstimmungen an.
Sie können chosen.i verwenden, um alle Dateien von diesem Link herunterzuladen Ausgewählter Download-Link
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="style.css" rel="stylesheet" type="text/css" />
<link href="prism.css" rel="stylesheet" type="text/css" />
<link href="chosen.css" rel="stylesheet" type="text/css" />
<script src="jquery-2.1.4.min.js" type="text/javascript"></script>
<script src="chosen.jquery.js" type="text/javascript"></script>
<script src="prism.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$(".chzn-select").chosen();
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<ion-view view-title="Profile">
<ion-content class="padding">
<div>
<label class="item item-input">
<div class="input-label">Enter Your Option</div>
<select class="chzn-select" multiple="true" name="faculty" style="width:1000px;">
<option value="Option 2.1">Option 2.1</option>
<option value="Option 2.2">Option 2.2</option>
<option value="Option 2.3">Option 2.3</option>
</select>
</label>
</div>
</ion-content>
</ion-view>
</div>
</form>
</body>
</html>
Alle Dateien in demselben Ordner
Sie könnten Ihre eigenen hacken, ohne sich auf jQuery-Plugins zu verlassen ... obwohl Sie extern (in JS) den Überblick über ausgewählte Elemente behalten müssten, da der Übergang die ausgewählten Statusinformationen entfernen würde:
<head>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.4.4.min.js'></script>
<script type='text/javascript'>
$(window).load(function(){
$('#transactionType').focusin(function(){
$('#transactionType').attr('multiple', true);
});
$('#transactionType').focusout(function(){
$('#transactionType').attr('multiple', false);
});
});>
</script>
</head>
<body>
<select id="transactionType">
<option value="ALLOC">ALLOC</option>
<option value="LOAD1">LOAD1</option>
<option value="LOAD2">LOAD2</option>
</select>
</body>
<select id="mycontrolId" multiple="multiple">
<option value="1" >one</option>
<option value="2" >two</option>
<option value="3">three</option>
<option value="4">four</option>
</select>
var data = "1,3,4"; var dataarray = data.split(",");
$("#mycontrolId").val(dataarray);
Ich habe jQuery MultiSelect verwendet, um ein Dropdown-Menü mit mehreren Auswahlen und einem Kontrollkästchen zu implementieren. Sie können den Implementierungsleitfaden von hier aus sehen - Mehrfachauswahl-Dropdown-Liste mit Kontrollkästchen
Die Implementierung ist sehr einfach und erfordert nur den folgenden Code.
$('#transactionType').multiselect({
columns: 1,
placeholder: 'Select Transaction Type'
});
Möchten Sie so etwas tun http://jsfiddle.net/robert/xhHkG/
$('#transactionType').attr({
'multiple': true,
'size' : 10
});
Setzen Sie das in eine $(function() {...})
oder eine andere onload
Lesen Sie Ihre Frage noch einmal durch, Sie suchen nicht wirklich nach einer Mehrfachauswahl ... sondern nach einem Dropdown-Feld, in dem Sie mehrere auswählen können. Ja, wahrscheinlich ist es das Beste, ein Plugin dafür zu verwenden oder es von Grund auf neu zu schreiben.