0

我正在使用 grails 2.1.0。我的视图页面中有一个自动完成字段。对于自动完成字段,我使用了richui 插件。结果显示在框中。现在我想使用该字段的值的 id 而不是字符串。但我无法获取/设置 ID。我不知道如何从该字段中获取 id。谁能帮我解决这个问题。下面是我的源代码:

我的浏览页面>>>

    <g:form controller="autocomplete" action="doSomething">
      <richui:autoComplete id="countryName" name="countryName" action="${createLinkTo('dir': 'autocomplete/searchCountry')}" />
    <br/>
    <g:submitButton name="doSomething" />
</g:form>

我的自动完成控制器动作>>>

def searchCountry = { 
    def country = Country.findAllByNameLike("${params.query}%")        
    //Create XML response 
    render(contentType: "text/xml") {
        results() {
            country.each { countries -> 
                result(){
                    name(countries.name) 
                    id(countries.id)
                }
            } 
        } 
    } 
}

我想要使​​用 id 的愿望行动 >>>

def doSomething(){
    def val = "Country Id is -- > " + params.countryName
    render val
}
4

2 回答 2

1

嘿,我已经解决了这个问题,只需调用一个 javascript 函数并添加一个隐藏字段。如下 :

<richui:autoComplete id="countryName" name="countryName" action="${createLinkTo('dir': 'autocomplete/searchCountry')}" 
                       onItemSelect="callCountry(id)"/>

我的隐藏领域>>>

<g:hiddenField id ="countryId" name ="countryId" value=""/>

我在头部的 js 函数 >>>

    <script type="text/javascript">
    function callCountry(countryId){
      document.getElementById('countryId').value = countryId;
  }
</script>
于 2013-06-26T05:18:14.533 回答
0

根据插件文档,您可以访问其中的 countries.id(例如 id)onItemSelect

<richui:autoComplete id="countryName" name="countryName" 
  action="${createLinkTo('dir': 'autocomplete/searchCountry')}" 
  onItemSelect="document.location.href='${createLinkTo(dir: 'doSomething')}/' + id;" 
/>

像这样配置,一旦用户从自动完成列表中选择一个项目,操作(带有 id)就会被调用,而不必显式点击提交。

于 2013-06-20T12:57:59.157 回答