从Tapestry中的JavaScript函数内部提交表单
我试图从Tapestry中的JavaScript函数内部提交表单。 这是tml文件从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
<!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输入字段,而是使用