jquery - 如何使用相同的 (css) id 为多个表单自动完成工作?

标签 jquery css ruby-on-rails jquery-autocomplete

以下代码用于搜索公司列表并返回前 10 个结果。对于具有单个 id(css) 的单个输入表单,它工作得很好。

当我在 View 中有第二个具有相同 ID 的表单时,自动完成仅适用于我调用输入 id="company"的第一个实例。出于我的目的,我有多个表单,我需要相同的自动完成功能才能工作,而无需更改 ID(company1、company2 等)

我不想为输入表单的每个实例重写脚本部分。 无论如何,是否有使用相同 ID 的所有输入的自动完成工作?

应用/ View :

 <script>
 $('#company').autocomplete({

     minLength: 2,

     source: '<%= company_path %>',

     focus: function(event, ui) {
         $('#company').val(ui.item.name);
         return false;
     },

     select: function(event, ui) {
         $('#company').val(ui.item.name);
         return false;
     }
 })


        .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
            return $( "<li></li>" )
                .data( "item.autocomplete", item )

                .append( "<a>" + item.name + "</a>" )
                .appendTo( ul );
        };

});

</script>

<input type="text" class="span11" id="company" name = "company" >  ***<!--autocomplete works fine-->***

<input type="text" class="span11" id="company" name = "company" >  ***<!--autocomplete does not work in second instance -->***

配置/路由:

match '/company', to: 'search#company_autocomplete'

Controller /搜索 Controller

  def company_autocomplete
  if params[:term]
    if params[:term].length>1
    @companies_autocomplete = Company.select(:name).where( 'name LIKE ?', "%#{params[:term]}%").first(10)

    end
  end

   render :json => @companies_autocomplete.to_json 

  end

最佳答案

ID 必须是唯一的。一般来说,如果您需要将相同的东西应用到两个不同的元素,您应该使用一个类。

<input type="text" class="span11 company" id="company1" name = "company" >

<input type="text" class="span11 company" id="company2" name = "company" >

然后你的 JS 选择器可以只使用句点而不是 #

$('.company').autocomplete({

     minLength: 2,

     source: '<%= company_path %>',

     focus: function(event, ui) {
         $('.company').val(ui.item.name);
         return false;
     },

     select: function(event, ui) {
         $('.company').val(ui.item.name);
         return false;
     }
 })

关于jquery - 如何使用相同的 (css) id 为多个表单自动完成工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20079549/

相关文章:

javascript - 具有重复背景的自定义高亮文本

html - 激活下拉菜单时的黑色空间

javascript - 下载由 Javascript 生成的动态创建的 CSS 文件

mysql - ruby中安装MYSQL gem时出现gem安装错误

ruby-on-rails - 将字符串中的正则表达式转换为 ruby​​ 中的正则表达式对象

php - 如何将 PHP 变量传递给 JavaScript 函数?

javascript - Bootstrap 子模态打开时触发父模态打开事件

jquery - id 不工作使用 jquery

css - CSS 中的条件 CSS 不起作用

ruby-on-rails - 模型关联问题