jquery select2 – 不工作

我正在使用select2插件(ivaynberg.github.io/select2)。 我正在尝试显示下拉列表(选择)。 它将data.php中的所有项目作为选项。 但是,select2意味着是自动完成插件,应该搜索客户端输入的搜索词,并仅显示匹配结果。 目前它显示所有项目而没有获得搜索结果。 对不起我的语言

data.php正在回应这个:

[{ "id": "1", "text": "item1", "exercise": "blah text" }, { "id": "2", "text": "item2" } ] 

代码是:

 $(document).ready(function () { $('#thisid').select2({ minimumInputLength: 2, ajax: { url: "data.php", dataType: 'json', data: function (term, page) { return { q: term }; }, results: function (data, page) { return { results: data }; } } }); }); 

输入是:

  

我想找到一个线索,我对这个插件很新,并花了一天时间查看示例。

如果附加到标准select表单控件,select2将不会执行AJAX。 它必须附加到一个隐藏的input控件,以通过AJAX加载。

更新 :这已在Select2 4.0中修复。 从预发行说明 :

与所有数据适配器的标准元素保持一致,无需隐藏的元素。

它也可以在其示例部分的function中看到。

我想user2315153想要接收多个远程值,并错误地将select2()与ajax调用分配给< select >元素。

获取远程值的正确方法是使用普通的< input >元素,如果需要多个值,请在方法调用中通知“multiple”参数。 例:

   

< select >元素不能用于远程值

更新:从select2 4.0.0开始,隐藏的输入已弃用:

https://select2.github.io/announcements-4.0.html#hidden-input

这意味着:使用SELECT标记,而不是使用输入来选择select2插件。

注意:从服务器上使用任何格式的json都很容易。 只需使用“processResults”即可。

例:

   

我尝试了代码,效果很好。 我认为你不包括jquery框架或检查js和css的路径。

             

我认为不需要使用隐藏的输入元素。 你可以尝试一下,从ajax调用中获取普通的html数据并设置它,然后使用init select2重置方法。 这是代码片段

HTML

  

使用Javascript

  $.ajax({ type: "POST", cache:false, url: YOUR_AJAX_URL, success: function(response) { $('#select').html(response); } }); $('#select').select2("val",""); 

Ajax响应:

  . . .  

经过多次阅读,我决定更改select2.js本身。

在2109行将其更改为

 this.focusser.attr("id", "s2id_"+this.select.context.id); 

如果您的输入标记是这样的

  

因此,在列表中搜索的输入标记的id为s2id_fichier_search

据我所知,不应该有冲突,这将允许你在同一页面上有多个select2并通过他们的事件运行你的函数(包括.get,。post)。

 $(function() { $('#s2id_fichier_search').keyup(function() { console.log('Be Practical') }) } 

所以这将像你要使用一样运行