使用<input>时如何从select2获取Selected Text

rob*_*sta 64 javascript jquery knockout-2.0 jquery-select2 ui-select2

我正在使用select2控件,通过ajax 加载数据.这需要使用<input type=hidden..>标签.

现在,我想检索选定的文本.(表达式中的value属性仅为data-bindsotres id)

我试过了$(".select2-chosen").text(),但是当我在页面上有多个select2控件时,这会中断.

Moe*_*eri 153

从Select2 4.x开始,它总是返回一个数组,即使对于非多选列表也是如此.

var data = $('your-original-element').select2('data')
alert(data[0].text);
alert(data[0].id);
Run Code Online (Sandbox Code Playgroud)

对于Select2 3.x及更低版本

单选:

var data = $('your-original-element').select2('data');
if(data) {
  alert(data.text);
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果没有选择,变量'data'将为null.

多选:

var data = $('your-original-element').select2('data')
alert(data[0].text);
alert(data[0].id);
alert(data[1].text);
alert(data[1].id);
Run Code Online (Sandbox Code Playgroud)

来自3.x 文档:

data获取或设置选择.类似于val方法,但与对象而不是id一起使用.

在具有未设置值的单选择上调用的数据方法将返回null,而在空多选上调用的数据方法将返回[].

  • 注意,如果`$('your-original-element')`设置为多个选择`$('your-original-element').select2('data')`将返回数组,在这种情况下`data.text`不会使用`data [index] .text` (13认同)
  • 对于select2的当前版本(截至今天的v4.0.0),即使是单选,也只有`var data = $('your-original-element').select2('data')[0]`对我有用.`$('your-original-element').select2('data').id //或.text`给了我'undefined`.请参阅[this jsfiddle](http://jsfiddle.net/18xua31f/)进行证明.尝试在小提琴中的控制台中记录`$('your-original-element').select2('data').id //或.text`. (7认同)

Sol*_*Sol 14

我终于明白了这样做:

var $your-original-element = $('.your-original-element');
var data = $your-original-element.select2('data')[0]['text'];
alert(data);
Run Code Online (Sandbox Code Playgroud)

如果你也想要这个价值:

var value = $your-original-element.select2('data')[0]['id'];
alert(value);
Run Code Online (Sandbox Code Playgroud)


Rah*_*aee 5

用它来显示文本

var data = $('#id-selected-input').select2('data'); 
data.forEach(function (item) { 
    alert(item.text); 
})
Run Code Online (Sandbox Code Playgroud)