选择2:设置隐藏字段值
我有以下代码:
$('input[name="airport"]', '#details-form').select2({ minimumInputLength: 3, multiple: true, separator: ';', width: 'off', initSelection : function (element, callback) { var data = []; $(element.val().split(';')).each(function () { data.push({id: this, text: this}); }); callback(data); }, ajax: { url: History.getBasePageUrl() + 'get-airports-dictionary', dataType: 'json', data: function (term, page) { return { q: term }; }, results: function (data, page) { var code = parseInt(data[0]); switch (code) { case 0: return {results: data[1]}; break; default: window.Common.showError(data[1]); break; } } }, formatResult: formatAirportResult, formatSelection: formatAirportSelection });
一切正常,直到我想为该字段设置一个现有值 – initSelection方法中的元素参数显示空值!
$('input[name="airport"]', '#details-form').select2('val', '2');
我尝试使用以下代码设置原始值:
$('input[name="airport"]', '#details-form').val('2');
它工作,但在select2的val方法中的某个地方,值消失了..
我使用此更新的Select2版本3.4.0。
谢谢
这是工作解决方案:
$('input[name="airport"]', '#details-form').select2({ minimumInputLength: 3, multiple: true, separator: ';', width: 'off', initSelection : function (element, callback) { var data = []; $(element.val().split(',')).each(function(i) { var item = this.split(':'); data.push({ id: item[0], label: item[1] }); }); callback(data); }, ajax: { url: History.getBasePageUrl() + 'get-airports-dictionary', dataType: 'json', data: function (term, page) { return { q: term }; }, results: function (data, page) { var code = parseInt(data[0]); switch (code) { case 0: return {results: data[1]}; break; default: window.Common.showError(data[1]); break; } } }, formatResult: formatAirportResult, formatSelection: formatAirportSelection }); function formatAirportResult(item) { return item.label + ' ' + item.code + ''; } function formatAirportSelection(item) { return item.label; }
我不知道为什么,但是value参数不能是字符串 – 为了使它工作,它必须是一个字符串数组。否则select2将空值设置为输入字段。
$('input[name="airport"]', '#details-form').select2('val', ['2:Domodedovo', '3:Vnukovo']);
certificate – http://jsfiddle.net/GZyeb/1/