无法获得Select2下拉列表的选定值

时间:2016-09-26 07:02:18

标签: javascript asp.net-mvc jquery-select2 select2 jquery-select2-4

我在我的MVC项目中使用Select2 Dropdown下拉列表,如下所示。虽然我可以直接设置通过AJAX传递“查询”参数,但我无法在下面的数据部分中获取所选文本或下拉列表的值。如何获得它?

@Html.DropDownListFor(x => x.StudentId, Enumerable.Empty<SelectListItem>(), 
    new { style ="width: 100%;" } )

$("#StudentId").select2({
   multiple: false,
   placeholder: "Select",
   allowClear: true,
   tags: true,

   ajax: {
       url: '/Grade/StudentLookup',
       dataType: 'json',
       delay: 250,

       data: function (params) {
           return {
               //q: params.Name, // search term
               //page: params.page
               query : 'test' //this parameter can be passed via AJAX
               //!!! but I cannot get the selected text or value of dropdownlist 
           };
       },              

       processResults: function (data, page) {
           var newData = [];
           $.each(data, function (index, item) {
               newData.push({
                   id: item.Id,     //id part present in data 
                   text: item.Name  //string to be displayed
               });
           });
           return { results: newData };
       },
       cache: true
   },
   escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
   minimumInputLength: 0, //for listing all, set : 0
   maximumInputLength: 20, // only allow terms up to 20 characters long
});

2 个答案:

答案 0 :(得分:1)

您只需听取select2:select事件即可获取所选项目。

  

Events

     

<强> SELECT2:选择

     

每当选择结果时触发。

&#13;
&#13;
var select2 = $(".select2");

select2.select2({
  multiple: false,
  placeholder: "Select",
  allowClear: true,
  tags: true,
  width: "180"
});

function onSelect(evt) {
  console.log($(this).val());
}

select2.on('select2:select', onSelect)
&#13;
@import url('https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css');
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>

<select class="select2">
  <option value="item-1">Item 1</option>
  <option value="item-2">Item 2</option>
  <option value="item-3">Item 3</option>
  <option value="item-4">Item 4</option>
  <option value="item-5">Item 5</option>
  <option value="item-6">Item 6</option>
  <option value="item-7">Item 7</option>
  <option value="item-8">Item 8</option>
  <option value="item-9">Item 9</option>
  <option value="item-10">Item 10</option>
</select>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

==============================已解决============= =================

以下是问题的解决方案:

要通过AJAX在Select2中发送文本值,请在数据部分中使用 params.term ,如下所示。非常感谢@DavidDomain作为他的答案也非常有用,以便使用选定的索引更改。

//code omitted for brevity
data: function (params) {
   return {
             query: params.term, // search term
             page: params.page
           };
   }, 
...