2012-03-07 12 views
2

通常form.submit()、仕事submitという名前の入力がある場合、javascriptでフォームを送信するにはどうすればよいですか?

しかしsubmitという名前の入力があるかどう、

form.submitは非常に入力されますと、あなたは上記のコードでフォームを送信することはできません。します

この場合、フォームを送信する方法はありますか(入力の名前を変更しない場合)?

答えて

5

submitメソッドを別のフォームから呼び出し、thiscallまたはapplyとハックすることができます。

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

...しかしIE6では動作しません。

入力の名前をsubmit以外に変更する方が安全です。

+0

それはあまりにもIE6で動作させるための方法があります:

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

をまたは、送信ボタンを持っている場合は? –

+0

Hmm。フォームがDOMに追加されるとうまくいくのでしょうか? – kirilloid

+0

+1それを行うには素敵なトリック。 – Sarfraz

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に挿入する必要があります。

このよう

document.getElementById("yourButton").click() 
関連する問題