2011-11-17 44 views
2

我想提交表单到选择框更改的操作(当选择项目时,我需要更新另一个选择框或其他字段)。以下代码将将表单提交给form元素上定义的控制器/操作。Grails。提交给选择变更的控制器/操作

<g:select onchange="submit()"/> 

如何将表单提交给自定义操作? 我想在页面上放置一个隐藏的动作提交,并在选择框中选择一个项目时触发点击,但在那里跳转是一种更优雅的方式。 该项目使用jquery,所以原型库不可用。 非常感谢!

+2

Grails可以使用JQuery而不是AJAX的原型。安装JQuery插件并将'grails.views.javascript.library =“jquery”'添加到你的Config.groovy,'remoteLink','formRemote'等等,都将使用JQuery。 – ataylor

+0

好的,谢谢,那么在选择更改时提交怎么样? – Bax

回答

2

仅仅因为一个组合框被改变,提交整个表单是一种非常用的用例。通常,只需提交组合框的新值即可。

<g:form id="thisForm" action="yourFormAction"> 
    <g:select      
     onchange="${remoteFunction(
      action:'yourOnChangeAction', 
      update:'thisForm', 
      params:'\'thisInputField=\' + this.value')}" 
     value="${value}" 
     name="productDependencyType" 
     from="${values}" /> 
</g:form> 

但是,如果你真的想拥有所有其他表单字段提交,以及,我想这将是最好的,有一个调度措施,您的输入框中提交到之前设置一些隐藏字段标准形式 - 行动。隐藏的提交按钮是可怕的:)

+0

是的,这就是我想要的,但我需要刷新所有页面,我应该设置为更新? – Bax

+0

要收集整个表单的输入,可以使用: ** var data = $('#thisForm')。serialize()** [cd JQuery doc](http://api.jquery.com/serialize /) –

+0

你不应该重新加载整个页面,但是如果你想要的话,在'remoteFunction'的onComplete函数中调用window.location.reload()。 – Chris