我正在使用select2控件,通过ajax加载数据。这需要使用<input type=hidden..>
标签。
现在,我要检索选定的文本。(表达式中的value
属性仅是data-bind
sotre id
)
我已经尝试过了$(".select2-chosen").text()
,但是当我在页面上有多个select2控件时,这会中断。
Answers:
从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”将为空。
多选:
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文档:
data获取或设置选择。与val方法类似,但适用于对象而不是id。
具有未设置值的单选调用的data方法将返回null,而空的多选调用的data方法将返回[]。
var data = $('your-original-element').select2('data')[0]
我有用。$('your-original-element').select2('data').id // or .text
给我了undefined
。请参阅此jsfiddle以获取证明。尝试$('your-original-element').select2('data').id // or .text
在控制台中登录控制台。
$('your-original-element').select2('data');
工作对我来说。谢谢
您也可以使用以下代码选择值:
alert("Selected option value is: "+$('#SelectelementId').select2("val"));
下面的代码也解决了其他问题
.on("change", function(e) {
var lastValue = e.currentTarget.value;
var lastText = e.currentTarget.textContent;
});
我再次建议简单易用
当用户搜索并选择它时,它可以与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);
});
$('your-original-element')
设置为多选,$('your-original-element').select2('data')
则在这种情况下data.text
将无法返回数组,而是使用data[index].text