javascript form 1つのボタンで2つのフォームを送信する




textbox javascript event (6)

1つのボタンで2つのフォームを提出する場合は、これを行う必要があります:

1- setTimeout()を使用する

2 - ショーポップアップを許可する

<script>
function myFunction() {
setTimeout(function(){ document.getElementById("form1").submit();}, 3000);   
setTimeout(function(){ document.getElementById("form2").submit();}, 6000);   
}
</script>
<form  target="_blank" id="form1">
<input type="text">
<input type="submit">
</form>
<form target="_blank" id="form2">
<input type="text">
<input type="submit">
</form>

javascriptは2つのフォームを同時に送信しません 我々 は、同時にではなく、二重の後に一つのボタンで二つのフォームを提出する。

編集: このコードを使用すると、ブラウザはポップアップを許可しません。
私のようなあなたのソフトウェアにこのコードを使用すれば、ショーポップアップ用のブラウザを設定するだけですが、サイトを設計する際にブラウザを使用すると、ブラウザは障壁となり、コードは実行されません。

私はHTML形式の2つの形式を持っています.1つはPHPを使用してデータベースへの入力時にデータを提出し、もう1つはユーザーをpaypal支払いページに誘導します、私の問題はユーザーが両方の形式を提出しなければならないことです。しなければなりません。 とにかく、2つのフォームに1つの送信ボタンを使用することはありますか?

(Javascriptを歓迎します)


現在選択されている最良の答えはあまりにも曖昧で信頼性がありません。

これは私にはかなり安全な方法があるように感じます。

(Javascript:jQueryを使って簡単に書く)

$('#form1').submit(doubleSubmit);

function doubleSubmit(e1) {
    e1.preventDefault();
    e1.stopPropagation();
    var post_form1 = $.post($(this).action, $(this).serialize());

    post_form1.done(function(result) {
            // would be nice to show some feedback about the first result here
            $('#form2').submit();
        });
};

ページを変更せずに最初のフォームを投稿し、プロセスが完了するのを待ちます。 次に、2番目のフォームを投稿します。 2番目の投稿ではページが変更されますが、2番目のフォーム( post_form2 ?)で2番目の遅延オブジェクトを取得する場合も同様のコードを使用することができます。

私はコードをテストしなかった。


JavaScriptでこれを行うことができるはずです:

<input type="button" value="Click Me!" onclick="submitForms()" />

フォームにIDがある場合:

submitForms = function(){
    document.getElementById("form1").submit();
    document.getElementById("form2").submit();
}

あなたのフォームにIDがなくても名前がある場合:

submitForms = function(){
    document.forms["form1"].submit();
    document.forms["form2"].submit();
}

AJAXを使用して最初のフォームを提出することもできます。そうしないと、他のフォームが提出されなくなります。


クロムとIE9(と私は他のすべてのブラウザも推測している)では、後者はソケット接続を生成し、最初のものは破棄されます。 (ブラウザは、両方のリクエストが上記のコード内の1つのJavaScript「タイムスライス」内に送信され、最後のリクエストを除くすべてのリクエストを破棄するので、これを検出します)。

代わりに、2回目の送信(ただし、返信が受信される前)のイベントコールバックがある場合、最初のリクエストのソケットはキャンセルされます。 この場合、サーバーが最初のリクエストを処理した可能性があるので、これは絶対に推奨するものではありませんが、確かに分かりません。

私はあなたが使用する/あなたはサーバー側を処理できる単一の要求を生成することをお勧めします。


フォーム提出によって、ページはフォームのactionに移動します。 したがって、両方のフォームを伝統的な方法で提出することはできません。 各フォームでform.submit()を連続して呼び出すことでJavaScriptを使用しようとすると、最後のサブミッションを除いて各リクエストは中断されます。 JavaScriptを使用して最初のフォームを非同期で送信する必要があります。

var f = document.forms.updateDB;
var postData = [];
for (var i = 0; i < f.elements.length; i++) {
    postData.push(f.elements[i].name + "=" + f.elements[i].value);
}
var xhr = new XMLHttpRequest();
xhr.open("POST", "mypage.php", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(postData.join("&"));

document.forms.payPal.submit();




forms