来自DB的JQuery自动完成

时间:2014-10-27 21:53:53

标签: jquery grails autocomplete

我已将自动填充功能实现到我的Grails应用程序表单中的大多数字段中。

目前我有这个代码(下面)允许我手动输入在用户输入时建议的值,在这个例子中,我填写了两个字段的两个自动完成值:

<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"/>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script>
 $(function() {

 $( "#parameterName" ).autocomplete({
   source: ["HelloHi", "Moose"]
 });
 $( "#defaultValue" ).autocomplete({
   source: ["Blah", "Bleh"]
 });
});

我的问题是,我需要更改哪些内容,而不是必须手动输入值,我可以简单地让它从数据库中的列中检索所有值并使用它们自动建议/完成?

任何帮助都将不胜感激。

更新:

我在form.gsp中的函数:

<script>
$(function() {

$( "#parameterName" ).autocomplete({
  source: '${g.createLink(controller: 'templateInput', action: 'suggestedParameterNames')}'
  });
 });
</script>

我在控制器中为templateInput提供的功能:

def suggestedParameterNames() {
    def suggestions = templatingService.getSuggestedParamNameValues()

    render suggestions as JSON
}

我服务中的功能:

def getSuggestedParamNameValues(){
    def sql = new Sql(dataSource)
    def row = sql.rows("select distinct parameter_name from template_input")

    return row
}

我现在遇到的问题是,当我输入字段时,它会返回列中的每个值。我想要它,这样如果我输入“卡片”这个词。它只建议以“&#39; card&#39;”开头的值。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

autocomplete plugin docs包含以下示例

HTML:

<input type="text" name="country" id="autocomplete"/>

Ajax查找:

$('#autocomplete').autocomplete({
    serviceUrl: '/autocomplete/countries',
    onSelect: function (suggestion) {
        alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
    }
});

在您的情况下,不应对返回建议列表的网址进行硬编码,而应使用g.createLink标记,例如

serviceUrl: '${g.createLink(controller: "autocomplete", action: "countries")}',