如何在提交输入时提交带有javascript的表单?
问题描述:
通常form.submit()
将工作,如何在提交输入时提交带有javascript的表单?
,但如果有一个名为submit
输入,
form.submit
将是非常投入,你不能用上面的代码提交表单。
那么在这种情况下是否有提交表单的方法(如果我不更改输入的名称)?
答
您可以从另一个表格调用提交方法,并使用call
或apply
对this
进行破解。
document.createElement('form').submit.call(myForm);
...但它不会在IE6上工作。
将输入重命名为提交以外的内容比较安全。
答
我认为单词“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()
有没有一种方法,使其工作在IE6呢? – 2012-03-07 12:34:12
嗯。它会工作,如果表单将被添加到DOM? – kirilloid 2012-03-07 12:34:20
+1好玩的做法。 – Sarfraz 2012-03-07 12:34:30