我通过ajax使用select2控件loading data。这需要使用<input type=hidden..>
标记。
现在,我想要检索所选文本。 (value
表达式中的data-bind
属性仅限于id
我尝试了$(".select2-chosen").text()
,但是当我在页面上有多个select2控件时,这会中断。
答案 0 :(得分:144)
从Select2 4.x开始,它总是返回一个数组,即使对于非多选列表也是如此。
var data = $('your-original-element').select2('data')
alert(data[0].text);
alert(data[0].id);
对于Select2 3.x及更低
单选:
var data = $('your-original-element').select2('data');
if(data) {
alert(data.text);
}
请注意,如果没有选择,变量'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);
来自3.x docs:
data获取或设置选择。类似于val方法,但有效 用对象代替id。
在具有未设置值的单选项上调用的数据方法将返回 null,而在空的multi-select上调用的数据方法将返回 []。
答案 1 :(得分:14)
我终于明白这样做了:
"44[5e405f7b46d912b50ea59d0f0962ed9e251042a4b31208315c406a4aa962]ff" was not equal to "44[e504f5b7649d215be05ad9f09026dee95201244a3b218013c504a6a49a26]ff"
如果您还想要值:
var $your-original-element = $('.your-original-element');
var data = $your-original-element.select2('data')[0]['text'];
alert(data);
答案 2 :(得分:2)
您还可以使用以下代码获得所选值:
alert("Selected option value is: "+$('#SelectelementId').select2("val"));
答案 3 :(得分:1)
下面的代码也解决了
.on("change", function(e) {
var lastValue = e.currentTarget.value;
var lastText = e.currentTarget.textContent;
});
答案 4 :(得分:0)
我再次提出简单易行
当用户搜索并选择它时,它与ajax完美配合,通过ajax保存所选信息
$("#vendor-brands").select2({
ajax: {
url:site_url('general/get_brand_ajax_json'),
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term, // search term
page: params.page
};
},
processResults: function (data, params) {
// parse the results into the format expected by Select2
// since we are using custom formatting functions we do not need to
// alter the remote JSON data, except to indicate that infinite
// scrolling can be used
params.page = params.page || 1;
return {
results: data,
pagination: {
more: (params.page * 30) < data.total_count
}
};
},
cache: true
},
escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
minimumInputLength: 1,
}).on("change", function(e) {
var lastValue = $("#vendor-brands option:last-child").val();
var lastText = $("#vendor-brands option:last-child").text();
alert(lastValue+' '+lastText);
});
答案 5 :(得分:0)
从v4开始执行此操作的正确方法是:
$('.select2-chosen').select2('data')[0].text
它没有记录,所以未来可能会在没有警告的情况下破坏。
您可能希望首先检查是否有选择:
var s = $('.select2-chosen');
if(s.select2('data') && !!s.select2('data')[0]){
//do work
}
答案 6 :(得分:0)
这个使用V 4.0.3正常工作
var vv = $('.mySelect2');
var label = $(vv).children("option[value='"+$(vv).select2("val")+"']").first().html();
console.log(label);
答案 7 :(得分:0)
用于显示文字
var data = $('#id-selected-input').select2('data');
data.forEach(function (item) {
alert(item.text);
})
答案 8 :(得分:0)
在Select2版本4中,每个选项都具有列表中对象的相同属性;
如果有对象
Obj = {
name: "Alberas",
description: "developer",
birthDate: "01/01/1990"
}
然后您检索所选数据
var data = $('#id-selected-input').select2('data');
console.log(data[0].name);
console.log(data[0].description);
console.log(data[0].birthDate);