2015-06-05 71 views
0

使用真棒jQuery select2 plugin和一个Ajax数据源,我想知道如何获取所选选项的文本值。select2 jQuery插件:获取所选选项的文本值?

与正常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/

+0

http://stackoverflow.com/q/19814601/40822 – dotjoe

+0

@ dotjoe是的,这是答案。谢谢! – Richard

回答

0

您可以将它们又像存储中的对象和检索:

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]); 
});