如何使用<input>从select2中获取选定的文本
我正在使用select2控件,通过ajax 加载数据 。 这需要使用<input type=hidden..>
标签。
现在,我想要检索选定的文本。 ( data-bind
expression式中的value
属性只有id
)
我已经尝试了$(".select2-chosen").text()
,但是当我在页面上有多个select2控件时,这个会中断。
从Select2 4.x开始,它总是返回一个数组,即使对于非多重select列表。
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); }
请注意,当没有select时,variables'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 文档 :
数据获取或设置select。 与val方法类似,但是使用对象而不是id。
在一个unset值的单选中调用的数据方法将返回null,而在一个空的多选中调用的数据方法将返回[]。
我终于明白了这一点:
var $your-original-element = $('.your-original-element'); var data = $your-original-element.select2('data')[0]['text']; alert(data);
如果你还想要的价值:
var value = $your-original-element.select2('data')[0]['id']; alert(value);
您也可以使用以下代码来select值:
alert("Selected option value is: "+$('#SelectelementId').select2("val"));
我再次build议简单和容易
它的工作完美的Ajax当用户search和select它保存通过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); });
下面的代码也可以解决
.on("change", function(e) { var lastValue = e.currentTarget.value; var lastText = e.currentTarget.textContent; });
从v4开始,正确的做法是:
$('.select2-chosen').select2('data')[0].text
这是没有证据的,所以可以在未来没有任何警告地打破。
您可能需要先检查是否有一个select,但是:
var s = $('.select2-chosen'); if(s.select2('data') && !!s.select2('data')[0]){ //do work }