jQuery autocomplete无法显示全部结果问题求助
解决jQuery Autocomplete仅显示10条结果的问题
嘿,我之前也踩过这个坑!这是因为你用的Autocomplete插件(看起来是老版本的jQuery Autocomplete,不是后来的UI版本)默认会限制最多显示10条结果——哪怕你解析后得到了42条数据,插件也只会截取前10条来处理,这就是为什么你的formatItem只被调用10次的核心原因。
快速解决方案:添加max配置项
你只需要在autocomplete的配置选项里加上max参数,设置一个大于你数据总数的值(比如直接设为42,或者更大的100预留余量),就能让所有结果都显示出来。修改后的代码如下:
$(this).autocomplete('ajax_products_list.php?forceJson=0', { cacheLength: 0, max: 42, // 这里设置你需要显示的最大结果数,大于你的数据总量即可 parse: function(data){ parsed_data = []; tmp = data.split('\n'); for (i=0; i < tmp.length; i++) { // 额外加个判断过滤空行,避免接口返回的空字符串生成无效选项 if(tmp[i].trim() === '') continue; obj = tmp[i].split('|'); parsed_data[i] = { data: obj[0], value: obj[1], }; } return parsed_data }, formatItem: function (item, position, length){ return item; } }).result(addAssociation);
额外小贴士
- 如果你不确定未来数据的最大条数,可以把
max设为一个足够大的数值(比如1000),这样不管返回多少数据都能全部显示。 - 建议保留代码里的空行过滤逻辑,避免接口返回的末尾空字符串导致生成无效的空选项,影响用户体验。
内容的提问来源于stack exchange,提问作者magentodev
相关产品推荐
相关产品推荐

