【问题标题】:Select2 problems with search and initSelection搜索和初始化选择的 Select2 问题
【发布时间】:2015-03-23 09:55:59
【问题描述】:

选择2代码:

$(".js-select").select2( {
    placeholder: "Select Something",

    ajax: {
        // The number of milliseconds to wait for the user to stop typing before issuing the ajax request
        delay: 400,
        url: "<?php echo site_url('main/get_items') ?>",
        dataType: "json",
        cache: "true",

        data: function (params) {
            return {
            q: params.term, // search term
            page: params.page,

            };
        },

        processResults: function (data) {
            return {
                results: $.map(data, function(obj) {
                    return { id: obj.id, text: obj.nume };
                })
            };
        },
    },

    initSelection : function (element, callback) {
         var data = {id: "1", text: "test relation"};
         callback(data);
    },
});

HTML:

<select class="js-select" name="judet" style="width: 100%" required> </select>
  1. 第一个问题: 使用 initSelection 不起作用:

代码:

initSelection : function (element, callback) {
    var data = {id: "1", text: "test relation"};
    callback(data);
},

我看到“测试关系”文本,但是当我提交时,我没有得到 id 的值。

  1. 第二个问题:

当我尝试从下拉列表中选择 1 项时 .... Select2 初始化搜索 ...我需要 select2 仅在用户输入搜索内容时运行搜索 ...

网页:http://www.my-web-projects.com/ajax/main/table -> 按钮添加 ->下拉选择 1 并选择 2

【问题讨论】:

    标签: jquery codeigniter jquery-select2


    【解决方案1】:

    第一个问题:使用 initSelection 不起作用:

    这听起来像是 Select2 中的错误,它应该尝试创建 &lt;option&gt; 元素以便发送值。如果您能解决 in a jsbinreport it on GitHub 的错误,那将很有帮助。

    当我尝试从下拉列表中选择 1 项时 .... Select2 初始化搜索 ...我需要 select2 仅在用户输入搜索内容时运行搜索...

    您应该能够通过使用minimumInputLength 并将其设置为1 来实现此目的。我们使用这个in the AJAX example,所以只有在用户搜索时才会发送请求。

    $element.select2({
      minimumInputLength: 1
    });
    

    【讨论】:

    • 我已经尝试过 minimumInputLength 但是我必须在搜索中写一些东西才能看到列表。我不希望我只想查看列表并仅在用户键入内容时进行搜索...
    • 我不知道你在找什么,你的措辞就像minimumInputLength。您的描述非常模糊,不清楚您在寻找什么。
    • 我将使用 "minimumInputLength: 1" 并寻找解决我的第一个问题的选项。
    【解决方案2】:

    改变

    var data = {id: "1", text: "test relation"};
    

    var data = [{id: "1", text: "test relation"}];
    

    已编辑

    $(".js-select").select2({/* */}).select2("data", [{"id":"1","text":"test relation"}]);
    

    【讨论】:

    • 我正在查看您的代码,但找不到您在代码中使用的“js-tari-data-array”类。你能指出,或者更好的是,展示这个类的用法吗?
    • 我已更改为更小的描述并添加了 HTML
    • 您是否从代码中删除了 initSelection 指令?我在实时页面中没有看到它。
    • 我已经修改了测试页面 - 请参阅编辑选项
    • 在日志中,它给出了“名称='****' 的无效表单控件不可聚焦”错误,您是否应用了任何验证?如果没有,请在表单中添加“novalidate”子句,然后重试。
    猜你喜欢
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 2015-02-18
    相关资源
    最近更新 更多