2017-08-17 3 views
0

Angenommen, ich möchte mehrere Optionen auswählen und auch die Reihenfolge der Auswahl reservieren. Als Beispiel sehen Sie bitte jsfiddle.Wie reservieren Sie die Reihenfolge der Mehrfachauswahl mit Javascript?

Wenn ich Wyoming und DANNAmalapuram wählen, möchte ich das Ergebnis ["WY","Am"] sein, wo die WY vor dem Am, aber nicht ["An","WY"].

Ist das möglich? Danke Leute.

Hier ist mein HTML-Code,

<select multiple id="e1" style="width:300px"> 
     <option value="AL">Alabama</option> 
     <option value="Am">Amalapuram</option> 
     <option value="An">Anakapalli</option> 
     <option value="Ak">Akkayapalem</option> 
     <option value="WY">Wyoming</option> 
    </select> 
<input type="checkbox" id="checkbox" >Select All 

<input type="button" id="button" value="check Selected"> 

und JS-Code,

$("#e1").select2(); 
$("#checkbox").click(function(){ 
    if($("#checkbox").is(':checked')){ 
     $("#e1 > option").prop("selected","selected"); 
     $("#e1").trigger("change"); 
    }else{ 
     $("#e1 > option").removeAttr("selected"); 
     $("#e1").trigger("change"); 
    } 
}); 

$("#button").click(function(){ 
     alert($("#e1").val()); 
}); 

Antwort

0

ich dies von einer sehr langen und langweiligen Art und Weise denken kann tun: auf der select2 die Änderung Ereignis abonnieren und behalten Sie die ausgewählten Werte selbst im Auge.

Hier ist die aktualisierte Geige: http://jsfiddle.net/Nisarg0/agfs8m3d/2/

var e1Values = []; 

$("#e1").select2().on('change', function(e){ 
    console.log(e, e.val); 

    if(e1Values.length < e.val.length) { 
    // Add the value when a new item is selected. 
    e.val.forEach(function(item, index){ 
     if(e1Values.indexOf(item) == -1) { 
     e1Values.push(item); 
     } 
    }); 
    } else { 
    // Remove the value when an item is deselected. 
    e1Values.forEach(function(item, index){ 
     if(e.val.indexOf(item) == -1) { 
     e1Values.splice(index, 1); 
     } 
    }); 
    } 

    console.log("Current value: ", e1Values); 
}); 
Verwandte Themen