ajaxChosen插件无效

时间:2014-03-07 18:41:51

标签: jquery jquery-plugins jquery-chosen

我整个下午一直在和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的搜索结果”。我的控制台没有错误。

那么问题是什么?插件不起作用吗?或者我做错了什么?


我在这里创建了一个jsfiddle http://jsfiddle.net/4796y/

任何人都可以帮忙,这样我就不会浪费更多时间吗? :-)很想用这个。谢谢!

2 个答案:

答案 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
});