Grails - 自动填充,接收列表,最简单的方式2014

时间:2014-04-02 11:53:01

标签: jquery grails autocomplete

我需要在具有自动完成功能的inputtext中输入文本;然后选择对象书。

我有jquery自动完成功能:http://jqueryui.com/autocomplete/#default

但是我不明白我怎么能把它传递给$ {estrategia.Book.list()}

这是我的选择,其中包含以下列表:

<g:select id="estudiante" name="estudiante.id"
    from="${estrategia.Book.list()}" optionKey="id" required=""
    value="${bookInstance?.id}" class="many-to-one" />

这是JQuery自动完成,而不是我需要放入书单的availableTags:

 <script>
$(function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"Scheme"
];
$( "#tags" ).autocomplete({
source: availableTags
});
});
</script>

<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
</div>

修改

所以我创建了taglib,没有命名空间,这就是我正在尝试的,你能指出我的错误在哪里吗?

<div class="ui-widget">
<label for="try">Tags: </label>
 <input id="try">
 <g:books id="try"/>
</div>

我的taglib:

def books = {attrs ->
    out << "<script type='text/javascript'>"
    out << "books = ["
    Book.list().each {
        out << "'${it.title}',"
    }
    out << "];"
    out << "</script>"
}

非常感谢您提前


编辑:嗯,我没有解释我想做的所有事情......结果是jquery已经为你做了: http://jqueryui.com/autocomplete/#combobox

1 个答案:

答案 0 :(得分:0)

我有类似的东西,我只是创建了一个taglib来实现它:

def books = {attrs ->
    out << "<script type='text/javascript'>"
    out << "books = ["
      Book.list().each {
        out << "'${it.name}',"
      }
    out << "];"
    out << "</script>"
}

然后在GSP上你需要它的javascript:

<foo:jsNodeTypes/>

其中foo是您为taglib提供的命名空间。

或者,您可以使用ajax并根据需要自动完成请求来自服务器的数据。