繁体   English   中英

Select2更改输入名称(如果正在提交标签)

[英]Select2 change input name if tag is being submited

所以我有以下select2:

productFamilySelect.select2({
            tags: true
        });

默认情况下,关联的select元素的名称为product_family_id ,是否有一种方法可以将输入的名称更改为让我们说product_family_name ,如果用户输入了一个选定的值? 这样,我就可以肯定地在后端区分一个已经存在的值和一个用户想到的值。 通过数据库中的id进行检查并不十分适合,因为该值本身实际上可以是数字。

在深入研究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');
            }
        });

似乎有点骇人听闻,因为它不在实际的select2配置的配置中,但是它确实可以完成工作:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM