从Tapestry中的JavaScript函数内部提交表单

时间:2010-12-09 12:08:07

标签: javascript tapestry

我正在尝试从Tapestry中的JavaScript函数内部提交表单。 这是tml文件。

<!DOCTYPE html>
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:tx="tapestry-library:tapx">
<head>
    <script type="text/javascript">
        function bodyLoaded () {
          document.form1.submit();
        }
    </script>
</head>
<body onload="bodyLoaded()">
<form t:type="form" t:name="form1">
    <select t:type="select" t:id="reportType" t:model="literal:A, B"></select>
    <input t:type="submit" id="clientSubmit" value="Generate"/>
</form>
</body>
</html>

但我收到以下错误,表单未提交。

  

document.form1未定义[Break on   这个错误] document.form1.submit();

所以我查看了Tapestry生成的html代码。它有以下标记:

    <form onsubmit="javascript:Tapestry.waitForPage(event);" 
  action="test.form" method="post" id="form" name="form">

所以我将document.form1.submit()更改为document.form.submit(),但仍然无法解决问题。我的代码是否有任何问题(或)hibernate是否允许从JavaScript函数内部提交表单?

5 个答案:

答案 0 :(得分:1)

升级到tapestry 5.2。这是以前5.x版本中的一个已知问题。

https://issues.apache.org/jira/browse/TAP5-947

答案 1 :(得分:0)

<form t:type="form" t:name="form1" t:id="form1">
    <select t:type="select" t:id="reportType" t:model="literal:A, B"></select>
    <input t:type="submit" id="clientSubmit" value="Generate"/>
</form>




<script type="text/javascript">
        function bodyLoaded () {
          document.getElementById('form1').submit();
        }
    </script>

我刚刚在表单标记中添加了id,在java脚本中添加了一个。

这可能会对你有帮助。

感谢。

答案 2 :(得分:0)

而不是document.form尝试document.forms[0]

答案 3 :(得分:0)

Use id of the form

<form t:type="form" t:name="form1" t:id="form1">

document.form1.submit();

答案 4 :(得分:0)

我今天将tapestry从5.0.1.5更新到5.0.1.8以摆脱AjaxFormLoop中令人烦恼的错误,猜猜我遇到了什么:) 在沮丧了将近4个小时后,我尝试了一些有效的方法。

错误是由Tapestry在表单的onSubmit事件上自动添加waitForPage(event)javascript方法引起的(以防止在加载页面之前提交表单)。当你说document.getElementById('form1').submit();或这里的评论建议的任何迭代时,由于方法参数不匹配(我认为),它似乎抛出了这个异常。无论如何要修复它只需将行更改为document.getElementById('form1').submit(this);

这对我有用,我希望这也解决了你的问题!