如果正在提交标记,则选择2更改输入名称

时间:2017-05-17 06:19:39

标签: javascript jquery-select2

所以我有以下select2:

productFamilySelect.select2({
            tags: true
        });

默认情况下,关联的select元素的名称为product_family_id,那么有没有办法将输入的名称更改为product_family_name,如果用户输入的话是否为选定值?就是这样,我可以在后端确定区分已存在的值和用户想到的值。在数据库中按id检查并不适合,因为这个值本身实际上可以是数字。

1 个答案:

答案 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配置的配置,但是它应该工作:)