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') }) }
所以这将像你要使用一样运行