1

一度に2つのフォームを提出する機能があります。そして最後の(2番目の)postメソッドはalert()なしでは有効になりません。

私の間違いを見せてくれませんか。

  function formFunction() {
        ...
        $.post($("#form1").attr("action"), $("#form1").serialize() );
        $.post($("#form2").attr("action"), $("#form2").serialize() );

        //alert('done');
}

UPD

これが関数の呼び出し方法です

<form id="form0" name="form0" onsubmit="formFunction()">
    <input id="mainFormValue" type="text">
4

1 に答える 1

3

失敗する理由は、元のフォームの送信をキャンセルしていないためです。つまり、ボタンをクリックすると、ページがサーバーにポストバックされます。あなたがする必要があるのは、元のフォームの送信が完了しないようにすることです。

jQuery を使用してイベント ハンドラーを追加する場合は、 preventDefault() を使用してフォームの送信をキャンセルできます。

function formFunction(e) {
     e.preventDefault();
     $.post($("#form1").attr("action"), $("#form1").serialize() );
     $.post($("#form2").attr("action"), $("#form2").serialize() );
}

フォーム送信を目立たない JavaScript に変更して、jQuery によって設定された正しいイベント オブジェクトを取得します。

$("#form0").submit(formFunction);

他の解決策は、提出物に a を追加するreturn falseことです。上で提案した preventDefault 行は無視してください。[悪い考えですが、うまくいきます]

<form id="form0" name="form0" onsubmit="formFunction(); return false">
于 2012-11-06T21:31:35.787 に答える