我整个下午一直在和ajaxChosen一起修补,因为我喜欢Chosen,但是我的期权价值套装变得太大了。我也尝试过select2,但它太慢了。
http://harvesthq.github.io/chosen/ https://github.com/meltingice/ajax-chosen
所以,我已经选择了最新版本(1.1.0)和最新版本的ajaxChosen。我按如下方式初始化ajaxChosen:
$("#add_people").ajaxChosen({
type: 'GET',
minTermLength: 3,
afterTypeDelay: 300,
dataType: 'json',
url: 'http://cmcrm.chocolata.be/content/people.php?action=list_options'
}, function (data) {
var results = [];
$.each(data, function (i, val) {
results.push({ value: val.value, text: val.text });
});
return results;
});
我的脚本可以访问此URL,并且由于我的脚本与远程URL位于同一个域中,因此不会进行XSS预防。
我的JSON格式如下:
[{"value":3,"text":"Valerietje Mortelmans (Actief)"},{"value":9,"text":"Olivier Hopchet (Actief)"},{"value":13,"text":"Wieland Rits (Actief)"},{"value":14,"text":"Melissa Seiffert van der Merwede (Actief)"},{"value":15,"text":"Guillaume de Valensart (Actief)"},{"value":18,"text":"Xavier Cloet (Actief)"},{"value":19,"text":"Brent Lammens (Actief)"},{"value":21,"text":"Coralie Libert (Actief)"},{"value":22,"text":"Laetitia Theus (Actief)"},{"value":23,"text":"Evelien Mollet (Actief)"},{"value":24,"text":"Feya Smets (Actief)"},{"value":25,"text":"Michelle Warneke (Actief)"},{"value":26,"text":"Carolyn Spaenjaers (Actief)"},{"value":27,"text":"Evelien Raes (Actief)"},{"value":28,"text":"Ange Luyten (Actief)"}]
我看到所选择的已经初始化但是当我开始输入时,我立即得到“没有KEYWORD的搜索结果”。我的控制台没有错误。
那么问题是什么?插件不起作用吗?或者我做错了什么?
任何人都可以帮忙,这样我就不会浪费更多时间吗? :-)很想用这个。谢谢!
答案 0 :(得分:5)
经过一些进一步的研究后,我发现这个插件不再受到支持了。
迈克尔·佩林似乎将它与所选的1.X版本兼容: https://github.com/michaelperrin/ajax-chosen/
迈克尔的叉子工作,但仍然有点儿。在迈克尔的例子中,我的主要问题是在找到匹配结果后丢弃了一些打字的字母。出乎意料的行为!
也许最好给Select2另一个机会,因为它的用户声称他们可以在处理大型列表时绕过插件的懒散。
此插件受到积极支持并被广泛使用。也许最好把鸡蛋放在那个篮子里; - )
可以找到有关Select2缓慢的问题here。
答案 1 :(得分:-1)
我遇到了同样的问题,没有启动Ajax请求。经过一番调查后,我发现如果您的选择为空,则选择禁用搜索功能。
将此添加到所选选项:disable_search_threshold: -1
您的代码应如下所示:
$("selector").ajaxChosen({
// AJAX & AjaxChosen OPTIONS
type: 'GET',
url: "/My/url.php",
dataType: 'json'
},
function (data) {
// CALLBACK
var results = [];
// [...]
return results;
},
{
// CHOSEN OPTIONS
disable_search_threshold: -1
});