首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有EasyAutocomplete - Rails的多输入字段

带有EasyAutocomplete - Rails的多输入字段
EN

Stack Overflow用户
提问于 2017-06-27 05:29:32
回答 2查看 1.7K关注 0票数 2

我使用EasyAutocomplete来选择一些数据。

我遇到的问题是我只能使用一个自动完成输入。我试图找到一个解决方案,但在文档中没有找到任何东西。

我的代码:

代码语言:javascript
复制
<%= form_tag('/search', local: true, method: :get, class: 'form-group row' ) do %>
    <div class="col-md-5">
        <%= text_field_tag(:q, nil, data: { behavior: 'autocomplete-lang' }, placeholder: 'Lenguaje', class: 'form-control') %>
    </div>
<% end %>
<%= form_tag('/search', local: true, method: :get, class: 'form-group row' ) do %>
    <div class="col-md-5">
        <%= text_field_tag(:q, nil, data: { behavior: 'autocomplete-ide' }, placeholder: 'Lenguaje', class: 'form-control') %>
    </div>
<% end %>

控制器:

代码语言:javascript
复制
def search
    @lang = Content.ransack(name_cont: params[:q],types_id_eq: 1).result(distinct: true)
    @ide = Content.ransack(name_cont: params[:q],types_id_eq: 4).result(distinct: true)
    respond_to do |format|
      format.html {}
      format.json {
        @lang = @lang.limit(5)
        @ide = @ide.limit(5)
      }
    end
end

Js:

代码语言:javascript
复制
document.addEventListener("turbolinks:load", function() {
    var $input = $("[data-behavior='autocomplete-lang']");


    var options = {
        getValue: "name",
        url : function(phrase) {
            return "/search.json?q=" + phrase;
        },
        categories: [
            {
                listLocation: "lang"
            }
        ],
        list: {
            onChooseEvent: function () {
                var id = $input.getSelectedItemData().id;
                console.log(id);
            }
        }
    };

    $input.easyAutocomplete(options);

});

document.addEventListener("turbolinks:load", function() {
    var $input_ide = $("[data-behavior='autocomplete-ide']");
    //IDE
    var options_ide = {
        getValue: "name",
        url : function(phrase) {
            return "/search.json?q=" + phrase;
        },
        categories: [
            {
                listLocation: "ide"
            }
        ],
        list: {
            onChooseEvent: function () {
                var id = $input_ide.getSelectedItemData().id;
                console.log(id);
            }
        }
    };

    $input_ide.easyAutocomplete(options_ide);
});

因此,我只能使用一次easyAutocomplete,如果我使用它两次,行为是不正确的,只有一个输入工作。

我真的需要一只手来解决这个问题,肯定很简单,但我无法理解。

EN

回答 2

Stack Overflow用户

发布于 2017-08-04 12:34:10

我面对同样的问题,并通过在每个文本字段中添加唯一的id来解决这个问题。

票数 3
EN

Stack Overflow用户

发布于 2019-12-10 17:24:23

在JavaScript中,而不是写:

代码语言:javascript
复制
getValue: "name"

您可以编写类似于:

代码语言:javascript
复制
getValue: function (element) {
    return element.lang+ element.ide
}

您可以跟踪关于这个github链接的讨论。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44772805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档