微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – 是否可以将列表粘贴到select2字段并匹配列表中的每个项目?

我使用Select2来管理大量数据.用户表示希望能够将列表粘贴到Select2字段,以便一次选择各种项目,而不是手动输入和匹配列表中的每个项目.

我尝试使用tokenSeparator来分离列表中的项目.这和demo on tokens in the documentation导致我相信,我希望做的是可能的,但到目前为止我没有喜悦.

我用来实例化Select2的代码是:

$('input').select2({
    width: 'element',matcher: function (term,text) {
        return text.toupperCase().indexOf(term.toupperCase()) === 0;
    },minimumInputLength: 3,multiple: true,data: tagList,// tagList is an array of objects with id & text parameters
    placeholder: 'Manage List',initSelection: function (element,callback) {
        var data = [];
        $.each(function () {
            data.push({id: this,text: this});
        });
        callback(data);
    },tokenSeparators: [',',' ']
});

只是为了澄清,在所有其他方面,select2字段的作品.只要将列表粘贴到字段中时,没有匹配项.我想测试粘贴列表中的所有项目.这是可能的,如果是这样,怎么样?

编辑:我尝试了以下代码,但似乎不起作用:

$('body').on('paste','#s2id_list-unitids .select2-input',function () {
    var that = this;
    setTimeout(function () {
        var tokens = that.value.split(/[\,\s]+/);
        $('#list-unitids').val(tokens,true);console.log($('#list-unitids').select2('val'));
    },1);
});

这里是我创建的小提琴:http://jsfiddle.net/KCZDu/.

解决方法

select2提供了一个让您预处理输入的tokenizer选项.这是一个可能的实现为您的特定用途:
tokenizer: function(input,selection,callback) {

        // no comma no need to tokenize
        if (input.indexOf(',')<0) return;

        var parts=input.split(",");
        for (var i=0;i<parts.length;i++) {
            var part=parts[i];
            part=part.trim();
            // todo: check for dupes (if part is already in [selection])

            // check if the part is valid
            // todo: you will need a better way of doing this
            var valid=false;
            for (var j=0;j<unitIds.length;j++) {
                if (part===unitIds[j]) { valid=true; break; }
            }

            if (valid) callback({id:part,text:part});
        }
    }

这里是一个工作小提琴:http://jsfiddle.net/XcCqg/38/

还要注意你原来的小提琴使用select2 3.2,这是非常过时的,可能不支持音标器.

原文地址:https://www.jb51.cc/jquery/179598.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐