我需要一个理论上的澄清...... Javascript表单提交和包含提交按钮的表单有什么区别? (我正在使用框架Struts,但我认为它不会影响行为)
我的意思是,这是我的例子,提交表单与输入类型=“提交”之间的区别是什么:
<html:form action="search.do?method=mySearch" method="post" styleId="searchFilterForm">
<input type="hidden" name="myfield" value="">
<table border="0" class="filterclass" width="530px">
<tr>
<td class="filterheader" align="center">
<input type="submit" onclick="doMySubmit()" name="MyList" value="SEND" class="button actionbutton" />
</td>
</tr>
</table>
function doMySubmit() {
var myform = document.getElementById('searchFilterForm');
myform.myfield.value = "Hello World";
}
并在内部提交JAVASCRIPT提交表格?
<html:form action="search.do?method=mySearch" method="post" styleId="searchFilterForm">
<table border="0" class="filterclass" width="530px">
<tr>
<td class="filterheader" align="center">
<input type="button" onclick="doMySubmit()" name="MyList" value="SEND" class="button actionbutton" />
</td>
</tr>
</table>
function doMySubmit() {
var myform = document.getElementById('searchFilterForm');
myform.myfield.value = "Hello World";
myform.submit();
}
答案 0 :(得分:9)
最显着的区别是,当通过单击提交按钮提交表单时,将会有一个与单击的按钮对应的请求参数。因此,在您的示例中,使用提交按钮会有一个名为MyList
且值为SEND
的请求参数。如果您在JavaScript中调用form.submit()
,则不会。
因此,如果您在服务器端调用request.getParameter("MyList");
,第一个方法将返回值为SEND的String,第二个方法将返回null
。当您想要根据表单是否已提交来控制流程,甚至是用于提交表单的按钮(如果您有多个)时,这一点变得非常重要。
答案 1 :(得分:1)
如果您的用户禁用了javascript,则无法提交表单。 为可访问性添加类型提交是一种更好的做法。 更多信息on this question