【问题标题】:jQuery UI autocomplete after input something输入内容后jQuery UI自动完成
【发布时间】:2015-09-22 16:46:05
【问题描述】:

我想在输入“@”(at 符号)后自动完成用户名。

form_html.erb:

  <div class="form-group ui-widget">
    <div class="col-sm-5">
      <%= f.text_area :content, rows: 5, placeholder: '...', class: 'form-control', id: "tags", 'data-article-id': @article.id.to_s %>
    </div>
  </div>

这是我的咖啡脚本:

$ ->
  id = $("#tags").data("article-id")
  $("#tags").autocomplete
    source:  '/articles/' + id + '/autocomplete.json'
    minLength: 1

目前的样子:

我想输入“@”(at 符号)然后自动完成用户名。

如果你有好的想法请告诉我,提前谢谢!

【问题讨论】:

  • 只是初步考虑了 textarea 的 keyup 检查长度;如果长度 = 1;在 @sign 前面加上用户输入的值....
  • 您也可以在 json 中的每个名称处加上 @ 符号。
  • @BasvanStein 你给了我好主意,谢谢!

标签: javascript jquery ruby-on-rails ruby coffeescript


【解决方案1】:

根据this post,您可以通过自定义$.ui.autocomplete.filter函数来完成这项工作。

【讨论】:

    【解决方案2】:

    作为@Bas van Stein 的建议,我可以在json 中的每个名称中添加@ 符号:

      def autocomplete
        @articles = Article.find_by(id: params[:article_id])
        @commentor_names = @articles.comments.map{|e| "@" + e.name}.uniq
                                             .map{|e| e if e.match(/^#{params[:term]}/i) }.compact
        respond_to do |format|
          format.html
          format.json {
            render json: @commentor_names
          }
        end
    

    结束

    然后出现:

    它可以工作,但效率低下,并不完美。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-22
      • 1970-01-01
      • 2019-10-30
      • 2011-03-22
      • 1970-01-01
      相关资源
      最近更新 更多