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”调用,所以它是:好的,我并不是说这很漂亮,但我只是在这个问题上搞砸了几分钟,并且有一些可能对你有用的东西。就像我说的......不是最漂亮的解决方案,但解决方法很少......
<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 提交