我正在尝试从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函数内部提交表单?
答案 0 :(得分:1)
升级到tapestry 5.2。这是以前5.x版本中的一个已知问题。
答案 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);
这对我有用,我希望这也解决了你的问题!