【问题标题】:Tokeninput Autocomplete not working in grails令牌输入自动完成在 grails 中不起作用
【发布时间】:2014-02-14 07:17:36
【问题描述】:

我认为这更像是一个 jQuery 问题而不是 grails 问题。我正在尝试使 tokeninput 使用具有以下输入的 grails 表单:

<g:field type="text" name="tags" id="my-text-input"></g:field>

这在网页上呈现为:

<input type="text" autocomplete="off" id="token-input-my-text-input" style="outline: none; width: 30px;">

这是上面链接中提到的我的 jQuery 代码:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" src="yourfiles/jquery.tokeninput.js"></script>
<link rel="stylesheet" type="text/css" href="yourfiles/token-input.css" />

<script type="text/javascript">
$(document).ready(function () {
    $("#my-text-input").tokenInput("/TaggableDemo/product/tags");
});
</script>

ProductController下的tags动作如下:

def tags = {

        render Tag.findAllByTagnameIlike("${params.q}%")*.tagname as JSON
    }

标签域有 3 个条目:“Tag1”、“Tag2”、“Tag3” 当我在有问题的输入元素中键入“T”时,标签控制器确实会被调用以进行自动完成,并且它也会返回正确的 json(我通过调试找到了这个)。但是自动完成 div 弹出窗口中没有显示任何内容。我想知道这里有什么问题。那么任何人都可以帮助使其工作吗?

【问题讨论】:

  • 您需要确定问题是来自控制器的 JSON 数据还是您编写 JSP 的方式有问题(未正确调用令牌库等)。因此,尝试从令牌网站获取原始 JSON 并将其放在某处并首先加载(静态 JSON)。如果可行,那么问题出在您的 JSON 格式上。如果不是,那么它与您的 HTML/JS/CSS 一起作为令牌。
  • 我认为它是 JSON 格式 - 在问题中包含您的 JSON。预期的格式是包含“name”和“id”键的地图列表 - 您的代码似乎只是字符串列表(称为标记名的字段)。
  • @nickdos json 没问题。但是这个问题似乎很奇怪,因为在调试上面的操作时,当我在输入字段中键入文本时,渲染上的断点被击中。但令人惊讶的是,在使用 chrome 的检查元素检查网络调用时,它显示 404。

标签: javascript jquery grails autocomplete jquery-tokeninput


【解决方案1】:

试试这个:

def tags = {
    def foundTags = Tag.findAllByTagnameIlike("${params.q}%")
    def output = []
    foundTags.each {
        output.add([id: it.id, name: it.tagname]) // assumes Tag has an id field exposed
    }
    render output as JSON
}

抱歉,代码未测试,因此可能存在错误。

【讨论】:

  • 看起来很有趣。会试一试!
  • 像宝石一样工作!谢谢你的精彩回答。 (我还有更多问题等待您的回答:D)
猜你喜欢
  • 2021-10-23
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 2014-06-13
  • 2012-09-19
相关资源
最近更新 更多