如何解决表格观察提交不起作用?
| 我已经读过很多遍了,这是提交表单时添加客户端回调的推荐方法,但是它对我不起作用:<t:form t:id=\"myForm\" id=\"myForm\">
<t:submit />
</t:form>
<script type=\"text/javascript\">
$(\"myForm\").observe(Tapestry.FORM_PREPARE_FOR_SUBMIT_EVENT,function() {
alert(\"submitting\");
});
alert(\"listening\");
</script>
有人可以指出我做错了什么吗?
我正在使用挂毯5.1.0.5
解决方法
5.1.0.5中有一个有趣的缺陷(已在较新版本中修复)
仅包含一个简单页面不会导致任何核心
Tapestry的javascript库要加载(tapestry.js,prototype.js等),因此表单甚至都没有钩住onSubmit。向表单中的字段添加验证可以解决此问题,但是如果您没有一个很难的字段。
如果您甚至没有在页面中加载tapestry.js,那么第一步就是确保您正在做的事情能够告诉框架您想要的东西。一种方法是调用RenderSupport#addScript。传递空字符串将被忽略,因此您可以在其中插入分号以本质上禁止操作。
@Inject
private RenderSupport renderSupport;
void setupRender() {
// non-blank addScript causes stack to get added
renderSupport.addScript(\";\");
}
接下来要做的是在表单元素上调用getFormEventManager来初始化挂毯的表单,并确保附加了事件处理程序。
我还更新了TML以等待dom加载,以免出现奇怪的计时错误:
<t:form t:id=\"myForm\">
<t:submit/>
</t:form>
<script type=\"text/javascript\">
Tapestry.onDOMLoaded(function() {
$(\'myForm\').getFormEventManager(); // forces the form to start listening for submits
$(\"myForm\").observe(Tapestry.FORM_PREPARE_FOR_SUBMIT_EVENT,function() {
alert(\"submitting\");
});
alert(\"Dom loaded\");
});
</script>
令人讨厌的,但在更高版本的框架中已修复。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。