2017-08-17 15 views
0

複数のオプションを選択し、選択の順序を予約したいとします。例としてjsfiddleを参照してください。javascriptを使用して複数選択の注文を予約する方法はありますか?

私はWyomingTHENAmalapuramを選択した場合、私は結果がWYAmではなく["An","WY"]の前にある["WY","Am"]、なりたいです。

これは可能ですか?みんなありがとう。ここで

が私のHTMLコード、

<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"> 

とJSコード、

$("#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()); 
}); 

答えて

0

である私は、これを行うのは非常に長いと退屈な方法を考えることができます。SELECT2に変更イベントを購読します選択した値を自分で追跡します。 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); 
}); 
:ここ

が更新フィドルです
関連する問題