grails远程表单,多次提交,使用javascript

Posted

技术标签:

【中文标题】grails远程表单,多次提交,使用javascript【英文标题】:grails remote form, multiple submits, with javascript 【发布时间】:2011-03-08 00:07:09 【问题描述】:

我有一个带有多个提交按钮的表单,我想更新一个远程框架。我尝试使用带有 2 个 g:actionsubmit 按钮(支持 javascript)的 g:formremote,但多个提交按钮有一个故障(在此处描述:http://www.grails.org/Ajax 在“带有 formRemote 的多个按钮”下)。

我采用了解决方法,使用 2 个g:submittoremote 按钮,按我预期的方式工作,但不接受 onClick 之类的 javascript 参数(有问题的按钮是接受/拒绝,我想放一个 AYS在拒绝上,所以它不会被意外使用)。

有没有办法让远程表单中的javascript和多个提交按钮和平存在?

提前感谢您的帮助...

【问题讨论】:

【参考方案1】:

您是否尝试过before 参数?它需要一个 JavaScript 函数,该函数将在远程函数调用之前执行。像这样使用它:

<g:submitToRemote value="Reject" update="feedback" 
                  controller="test" action="reject"
                  before="if (!confirm('sure?')) return false;" />

您在before 参数中输入的任何JavaScript 都将在您调用Ajax 更新程序之前插入到onclick 属性中。通过这种方式,您可以轻松地进行验证、获得确认等,甚至在提交 Ajax 调用之前中断 onclick 处理。有一个类似的after 参数。

【讨论】:

我弄乱了 before 属性的一堆排列,但没有尝试这个。这应该完全符合 OP 的要求。好电话! ETA:经过进一步检查,无论用户的选择如何,它仍然会发送表单。我在一个程序员的博客(fbflex.wordpress.com/2010/05/09/…)上找到了解决方案;它的要点是关闭after 中的“if”调用,所以它是: 这对我有用! 如果取消确认框,则不发送表单并且不执行操作,但是如果通过 OK 确认,则将表单发送到拒绝操作。使用当前的 Firefox 和 IE 进行了测试和双重检查。您可以将后一种解决方案重写为 before="if(confirm('sure?'))" after="" 但是将语句拆分为参数很奇怪,尤其是 submitToRemote 标记在 before 和后。您可以在渲染页面的源代码中看到这一点。【参考方案2】:

好的,我并不是说这很漂亮,但我只是在这个问题上搞砸了几分钟,并且有一些可能对你有用的东西。就像我说的......不是最漂亮的解决方案,但解决方法很少......

 <html>
<head>
<g:javascript library="prototype" />
</head>
<body>
<script type="text/JavaScript">
function setReject()

  document.getElementById('reject').value='true'

</script>

<g:formRemote name="test" update="updater" url="[ controller: 'date', action: 'test']" >
    <g:hiddenField name="reject" value="false" />
    <g:submitButton name="submit" value="something" onclick="setReject();return confirm('Are you sure???')" />
    <g:submitToRemote update="updater" action="otherTest" controller="date" value="Go Ahead"/>
</g:formRemote>


<div id="updater">

</div>
</body>
</html>

【讨论】:

以上是关于grails远程表单,多次提交,使用javascript的主要内容,如果未能解决你的问题,请参考以下文章

Grails、Spring Security 和 Keycloak:表单以 ISO-8859-1 而不是 UTF-8 提交

Grails 2.x提交带有其他参数的表单

php+ajax远程加载避免重复提交

使用“提交”回调和 $.ajax 发布时多次提交的表单

Laravel/PHP 多表单提交(多次点击提交按钮)

如果 django 表单提交失败,则运行 javascript