【问题标题】:Grails. Submit to controller/action on select change圣杯。在选择更改时提交给控制器/操作
【发布时间】:2011-12-31 16:59:38
【问题描述】:

我想在选择框更改时提交表单以执行操作(选择项目时,我需要更新另一个选择框,可能还有其他字段)。下面的代码会将表单提交给表单元素上定义的控制器/动作。

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

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

【问题讨论】:

  • Grails 可以使用 JQuery 代替 AJAX 原型。安装 JQuery 插件并将grails.views.javascript.library="jquery" 添加到您的 Config.groovy 中,remoteLinkformRemote 等都将使用 JQuery。
  • 好的,谢谢,在选择更改时提交怎么样?

标签: jquery grails jquery-forms-plugin


【解决方案1】:

提交整个表单是一个不寻常的用例,只是因为更改了一个组合框。通常,只需提交组合框的新值,以下内容就足够了。

<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>

但是,如果您真的希望同时提交所有其他表单字段,我想最好有一个调度操作,并且您的输入框在提交到标准表单操作之前设置一些隐藏字段.隐藏的提交按钮很可怕:)

【讨论】:

  • 是的,这就是我想要的,但我需要刷新所有页面,我应该将什么设置为更新?
  • 要收集整个表单的输入,您可以使用:var data = $('#thisForm').serialize() cd JQuery doc
  • 你不应该重新加载完整的页面,但如果你想这样做,在remoteFunction的onComplete函数中调用window.location.reload()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
相关资源
最近更新 更多