【问题标题】:How can I disable "no existing match" when using the gem "rails3-jquery-autocomplete"?使用 gem“rails3-jquery-autocomplete”时如何禁用“不存在匹配”?
【发布时间】:2013-04-10 16:10:34
【问题描述】:
我正在使用名为 rails3-jquery-autocomplete
https://github.com/crowdint/rails3-jquery-autocomplete
的 gem
以前没有匹配记录时不显示“没有匹配”消息。
但是,现在它总是弹出显示"no existing match"的消息
如何禁用此功能??
我的看法
<%= autocomplete_field_tag 'search', params[:search], autocomplete_community_title_communities_path, :class =>'input', :placeholder => 'keyword' %>
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-3
autocomplete
【解决方案1】:
如果 Rails 向客户端返回空哈希(public/javascript/autocomplete-rails.js 中的第 59 行),则此 Gem 提供的 jQuery 脚本会推送此消息:
...
if(arguments[0].length == 0) {
arguments[0] = []
arguments[0][0] = { id: "", label: "no existing match" }
}
jQuery(arguments[0]).each(function(i, el) {
var obj = {};
obj[el.id] = el;
jQuery(e).data(obj);
});
response.apply(null, arguments);
...
我不知道你到底想做什么,但你可以,例如,从你的 autocomplete-rails.js 中删除下一个块(或更改标签值)
if(arguments[0].length == 0) {
arguments[0] = []
arguments[0][0] = { id: "", label: "no existing match" }
}
此文件应位于您的 public/javascript 目录中。如果这个文件在你的情况下是压缩的,你可以通过官方文档中的这个命令解压它,然后修复它:
rails 生成自动完成:未压缩
【解决方案2】:
试试下面的脚本
$('autocomplete_element_selector').on('autocompleteresponse', function(event, ui) {
变量内容;
if (((content = ui.content) != null ? content[0].id.length : void 0) === 0) {
$(this).autocomplete('close');
}
});