选择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/