所以我有以下select2:
productFamilySelect.select2({
tags: true
});
默认情况下,关联的select元素的名称为product_family_id
,那么有没有办法将输入的名称更改为product_family_name
,如果用户输入的话是否为选定值?就是这样,我可以在后端确定区分已存在的值和用户想到的值。在数据库中按id检查并不适合,因为这个值本身实际上可以是数字。
答案 0 :(得分:0)
在深入研究select2自定义事件后,我找到了一种方法:
首先添加createTag回调,如下所示:
productFamilySelect.select2({
tags: true,
createTag: function (params) {
var term = $.trim(params.term);
if (term === '') {
return null;
}
return {
id: term,
text: term,
newTag: true
}
}
});
然后,添加以下监听器:
productFamilySelect.on('select2:select', function (e) {
if (e.params.data.newTag === true) {
$(this).attr('name', 'product_family_name');
} else {
$(this).attr('name', 'product_family_id');
}
});
看起来有点hacky,因为它超出了实际的select2配置的配置,但是它应该工作:)