2014-06-20 35 views
1

選擇2返回absdefghi值。 如何獲取當前選定的值或數據屬性。
我想只得到abcdef有史以來選擇那麼該怎麼辦?選擇2:如何獲得當前選定值

總之

我正在選擇多個,然後最新選擇將顯示。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <link href="http://ivaynberg.github.io/select2/select2-3.5.0/select2.css" rel="stylesheet"/> 
    <script src="http://ivaynberg.github.io/select2/select2-3.5.0/select2.js"></script> 
    <script> 
     $(document).ready(function() { 
      var target = $("#e1"); 
      var initId = $(target).select2();  
      $(target).change(function() { 
       var theID = $(target).select2(); 
       alert(theID); 
      }); 
     }); 
    </script> 
    <select id="e1" multiple > 
     <option value="abc" data-id='1' >ABC</option> 
     <option value="def" data-id='2'>DEF</option> 
     <option value="ghi" data-id='3'>GHI</option> 
     <option value="jkl" data-id='4'>JKL</option> 
     <option value="mno" data-id='5'>MNO</option> 
    </select> 
+0

我還是不明白,但'$(「option」)。each(fn)'where fn will receive the option element is not enough? – Deeptechtons

+0

@Deeptechtons請添加你的答案,我想試試.. :) –

+0

你的要求是,如果你選擇多個然後最新的選擇將顯示我是嗎? –

回答

0

退房this鏈接這會給你答案。你也可以測試

您可以用以下方式獲得ID /文本

var theID = $(test).select2('data').id; 
var theSelection = $(test).select2('data').text; 

Click here for working example on jsFiddle

var selections = $('#e1').val(); 
alert(selections); 
+0

變空意味着沒有身份證從你的答案中獲得。 –

+0

獲取編輯的詳細信息和鏈接提供:http://jsfiddle.net/platypusman/GEHUD/ –

+0

我已經谷歌這個問題。也嘗試過這個小提琴:) –

1

請使用如下JS我認爲它會在您的解決方案工作

$(document).ready(function() { 
      var target = $("#e1"); 

      $(target).change(function() { 
       var latest_value = $("option:selected:first",this).val(); 
       alert(latest_value); 

      }); 
     }); 

http://jsfiddle.net/GEHUD/651/

請讓我知道,如果這個解決方案行不通

+0

與你的ans問題再次.. 得到:abc,abc ghi,abc ghi jkl –

+0

您的要求是,如果您選擇多個然後最新seleced將顯示我是嗎? –

+0

是的,我們可以說。這是我的要求的一部分。 –

0

試試這個

var theID = $("option:selected", target).data("id"); 
+0

與您的解決方案它是所有時間返回第一個選項值是abc .. –

+0

我已編輯它,它現在有效。 – Esben

+0

對不起,但同樣的問題:( –

1

您將通過下拉列表中選擇的選項有循環,然後將它們添加到內部數組在以後的使用你的代碼

小提琴

http://jsfiddle.net/GLrN7/

代碼

$(document).ready(function() { 

     $("#btnOutput").on("click", function() { 
      var x = []; 
      $("#ddlItems > option:selected").each(function (index, el, list) { 
       x.push(el.getAttribute("data-id")); 
      }); 

      alert(x); 

     }); 
    }); 
0
$eventSelect.on("change", function (e) { 
    alert($(this).val()); 

}) 
1

如果有人仍然尋找的東西,使這項工作與選擇2多,這裏就是我如何做到這一點:

$(".select2-enabler").on("select2:select", function (evt) { 
    id = evt.params.data.id; 
    console.log(id); //Do what you want with this 
}); 

所以,我個人用的情況下,舉例來說,我保留select2插件中的事件在data-order屬性中的選擇順序,下面是完整的代碼,如果它可以幫助某人(請參閱Fiddle的實例):

$(".select2-enabler").select2(); //Enable select2 plugin 

$(".select2-enabler").on("select2:select", function(evt) { 

    newArr = [evt.params.data.id]; 
    data = $(this).data("order"); 
    arr = tryParseJSON(data); 
    if (arr) { 
    newArr = arr.concat(newArr); 
    } 
    $(this).data("order", JSON.stringify(newArr)); 
    //For demonstration purpose only 
    $("#result").val($(this).data("order")); 

}).on("select2:unselect", function(evt) { 

    data = tryParseJSON($(this).data("order")); 
    index = $.inArray(evt.params.data.id, data); 
    if (!!~index) { //Bitwise flip, so that -1 == false 
    data.splice(index, 1); 
    } 
    $(this).data("order", JSON.stringify(data)); 
    //For demonstration purpose only 
    $("#result").val($(this).data("order")); 

}); 

//Helper function for ParseJSON, optional 
function tryParseJSON(jsonString) { 
    try { 
    var o = JSON.parse(jsonString); 
    if (o && typeof o === "object") { 
     return o; 
    } 
    } catch (e) {} 
    return false; 
};