2012-03-07 123 views

回答

5

您可以从另一个表格调用提交方法,并使用callapplythis进行破解。

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

...但它不会在IE6上工作。

将输入重命名为提交以外的内容比较安全。

+0

有没有一种方法,使其工作在IE6呢? – 2012-03-07 12:34:12

+0

嗯。它会工作,如果表单将被添加到DOM? – kirilloid 2012-03-07 12:34:20

+0

+1好玩的做法。 – Sarfraz 2012-03-07 12:34:30

0

我认为单词“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> 
0

您可以在提交按钮上使用.click()函数。如果没有提交按钮,您将不得不首先将其中一个插入DOM。

像这样:

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

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

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