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

从Tapestry中的JavaScript函数内部提交表单,javascript,tapestry,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 bodyL

我试图从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>

函数bodyLoaded(){
文件。表格1。提交();
}
但我得到下面的错误,表格没有得到提交

document.form1未定义[断开 此错误]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函数内部提交表单?


<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>
函数bodyLoaded(){ document.getElementById('form1').submit(); }
我刚刚在表单标记中添加了id,并在java脚本中做了一个更改

这可能对你有帮助


谢谢。

不要使用
文档.表单
尝试
文档.表单[0]
使用表单id
Use id of the form

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

document.form1.submit();
文件。表格1。提交();
升级到tapestry 5.2。这是以前5.x版本中的一个已知问题


我今天将tapestry从5.0.1.5更新为5.0.1.8,以消除AjaxFormLoop中令人讨厌的bug,猜猜我遇到了什么:) 在沮丧了将近4个小时后,我尝试了一些有效的方法

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


这对我很有效,我希望这也能解决你的问题

这没用(以“form1”作为表单名称,我得到了错误的“文档”。getElementById(“form1”)为空。以“form”作为表单名称,我得到了错误的“文档”。getElementById(“表单”)。submit不是一个函数“ok”。尝试再添加一个表单元素“method=”post“。这可能是有效的。Tapestry生成了此代码“”。这是只发布的。好的。。我想我明白了。加载页面时会调用你的函数。但那时你的HTML表单没有创建。因此,请从onload事件中删除bodyLoaded函数。将此函数放在任何按钮上的click事件上。它可能会工作。我只能从body onload函数中调用submit函数。说来话长:(获取错误,“document.form1.submit不是函数[Break on this error]document.form1.submit();”之前的错误消息是“form1未定义”。进行此更改后,错误为“form1.submit不是函数”。document.form1.submit();在此form1中是form的id无效。获取此错误,“document.forms[0]。submit不是函数”。我现在意识到一件事。为输入字段生成的标记是“”。这可能是罪魁祸首。按钮名称不应为“提交”。由于按钮名称为“提交”,因此无法调用“提交()”函数。以下是有关更多信息的链接:我现在遇到了问题。Tapestry创建了名为“提交”的提交按钮。javascript在submit按钮和submit()函数之间混淆了。在我删除输入字段后,它工作正常。因此解决方案不是使用Tapestry输入字段,而是使用