jQuery select2重新格式化<select>但提交选项ID而不是值

eme*_*his 5 javascript jquery jquery-select2

我正在使用select2 jquery插件来重新格式化我的长选项.一切都按预期工作,除非我提交表单时将id值保存为值,而不是值(在本例中lang).我无法弄清楚我做错了什么.

这是脚本的样子:

var langs=[{id:0,lang:'English'},
    {id:1,lang:'Afrikaans'},
    {id:2,lang:'Albanian'},
    {id:3,lang:'Zulu'}];

function format(item) { return item.lang; };

$("#field_4").select2({
                  placeholder: "Select your language",
                  data:{ results: langs, text: 'lang' },
                  formatSelection: format,
                  formatResult: format
                  });
Run Code Online (Sandbox Code Playgroud)

这是标记:

<input id="field_4" name="field_4" type="text" class="regular-text " value="3" />
Run Code Online (Sandbox Code Playgroud)

当我在控制台中记录返回值时,我看到:

{Object}
    O: Object
        id: "1"
        text: "Afrikaans"
Run Code Online (Sandbox Code Playgroud)

更新: 我在这方面取得了一些进展.如果我将以下内容添加到构造函数对象(对于select2),我可以保存正确的值(而不是id).但是,当我添加到<select>使用AJAX获取选项的s时,这不起作用.

id : function(object) {
return object.lang;
}
Run Code Online (Sandbox Code Playgroud)

eme*_*his 8

我在开发人员的帮助下想出了这个:https://github.com/ivaynberg/select2/issues/852#issuecomment-13478644

简而言之,有一个id:回调函数可以处理将返回的ID映射到所需的输入值.