通常form.submit()
会起作用,
但是如果有一个名为submit
的输入,
form.submit
将是输入内容,您无法使用上述代码提交表单。
在这种情况下,有没有办法提交表单(如果我不更改输入的名称)?
答案 0 :(得分:5)
您可以从其他表单调用submit方法,并使用this
或call
破解apply
。
document.createElement('form').submit.call(myForm);
...但它不适用于IE6。
将输入重命名为提交以外的其他内容会更安全。
答案 1 :(得分:0)
我认为"提交"是保留字,不能用于除type=submit
元素之外的任何输入元素。
但总有办法打破规则。 通过使用AJAX执行POST请求,您可以使用任何您想要的名称。 你甚至不需要输入元素的名称,只需要一个id。 事实上,你甚至不需要一个表单,只需要一个输入元素。
<html>
<head>
<script type="text/javascript">
function ajaxRequest()
{
var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]
if(window.ActiveXObject)
{
for(var i=0; i<activexmodes.length; i++)
{
try{return new ActiveXObject(activexmodes[i])}
catch(e){}
}
}
else if(window.XMLHttpRequest) // if Mozilla, Safari etc
return new XMLHttpRequest()
else
return false
}
function myfunc()
{
var mypostrequest=new ajaxRequest()
mypostrequest.onreadystatechange=function()
{
if(mypostrequest.readyState==4)
{
if(mypostrequest.status==200 || window.location.href.indexOf("http")==-1)
{
document.getElementById("result").innerHTML=mypostrequest.responseText
}
}
}
var hiddenValue=encodeURIComponent(document.getElementById("submit").value)
var parameters="submit="+hiddenValue
mypostrequest.open("POST", "go2.php", true)
mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
mypostrequest.send(parameters)
}
window.onload = myfunc;
</script>
</head>
<body>
<div id="result"></div>
<input type='hidden' id='submit' value='1'>
</body>
</html>
答案 2 :(得分:0)
您可以在提交按钮上使用.click()函数。如果没有提交按钮,则必须首先将一个插入DOM。
像这样:
var submitbutton = document.createElement('input');
submitbutton.type = "submit";
document.getElementById("yourForm").appendChild(submitbutton);
submitbutton.click();
或者,如果你有一个提交按钮:
document.getElementById("yourButton").click()