select2 jQuery插件:获取所选选项的文本值? [复制]

Posted

技术标签:

【中文标题】select2 jQuery插件:获取所选选项的文本值? [复制]【英文标题】:select2 jQuery plugin: get the text values of the selected options? [duplicate] 【发布时间】:2015-08-20 16:50:40 【问题描述】:

使用了不起的jQuery select2 plugin 和Ajax 数据源,我想知道如何获取所选选项的文本值。

使用普通的select 元素我会做这样的事情:

$('#myselect option:selected").each(function() 
  var $this = $(this);
  if ($this.length) 
    console.log($this.val(), $this.text());
  
);

但这不适用于select2,因为由 Ajax 调用填充的 <option> 值没有文本。

同时,按照文档中的建议使用 .val() 来获取所选值只会返回一个 ID 数组,而不是显示元素的文本。

有没有办法解决这个问题?

JSFiddle 这里演示问题:http://jsfiddle.net/vfa4831b/8/

【问题讨论】:

***.com/q/19814601/40822 @dotjoe 是的,这就是答案。谢谢! 【参考方案1】:

您可以将它们存储在一个对象中,然后像这样再次检索:

var selectedValues = 

$(".select2").select2(
  ajax: 
    url: "https://api.github.com/search/repositories",
    dataType: 'json',
    delay: 250,
    data: function (params) 
      return 
        q: params.term,
      ;
    ,
    processResults: function (data, page) 
      return 
        results: data.items
      ;
    ,
    cache: true
  ,
  escapeMarkup: function (markup)  return markup; , 
  minimumInputLength: 1,
  templateResult: function(repo)  

    return repo.name + ' (' + repo.full_name + ')';
  ,
   templateSelection: function(repo)  
    selectedValues[repo.id] = repo.full_name;
    return repo.name + ' (' + repo.full_name + ')';
  
);
$('#clickme').on('click', function()  
    var id = $('.select2').val();
    console.log(selectedValues[id]); 
);

【讨论】:

以上是关于select2 jQuery插件:获取所选选项的文本值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

select2 jquery插件重置具有预选项目的选择元素

Select2 jquery插件在结果中显示所选项目的数量而不是标签

Select2 插件:在表单元素之外显示选定的选项

jquery select2 - 不工作

Select2 获取选中的选项数据

Vue.js 无法获取 jQuery select2 的值