我正在使用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
});
这是标记:
<input id="field_4" name="field_4" type="text" class="regular-text " value="3" />
当我在控制台中记录返回值时,我看到了:
{Object}
O: Object
id: "1"
text: "Afrikaans"
更新
我在这方面取得了一些进展。如果我将以下内容添加到构造函数对象(对于select2),我可以保存正确的值(而不是id
)。但是,当我添加到使用AJAX获取选项的<select>
时,这不起作用。
id : function(object) {
return object.lang;
}
答案 0 :(得分:8)
我在开发者的帮助下解决了这个问题:https://github.com/ivaynberg/select2/issues/852#issuecomment-13478644
简而言之,有一个id:
回调函数可以处理将返回的ID映射到所需的输入值。