当存在'这是一个名为submit的输入

How do I submit a form with javascript when there's an input named submit?

本文关键字:一个 submit 输入 存在      更新时间:2023-09-26

通常form.submit()将工作,

但如果有一个名为submit的输入,

form.submit将是最重要的输入,您不能提交带有上述代码的表单。

那么,在这种情况下,有没有办法提交表单(如果我不更改输入的名称)?

您可以从另一个表单调用submit方法,并使用callapply破解this

document.createElement('form').submit.call(myForm);

…但它在IE6上不起作用。

将输入重命名为submit以外的内容更安全。

我认为单词"submit"是一个保留字,不能在除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>

您可以在提交按钮上使用.click()函数。如果没有提交按钮,则必须先在DOM中插入一个。

像这样:

var submitbutton = document.createElement('input');
submitbutton.type = "submit";
document.getElementById("yourForm").appendChild(submitbutton);
submitbutton.click();

或者,如果你有一个提交按钮:

document.getElementById("yourButton").click()