0

私は2つのフォームを持っています。1 つはモーダル ポップアップにあり、もう 1 つはその下のページにあります。このコードを使用してそれらを同時に送信したい:

$('.window .submitlink').click(function (e) {
    $('#form2').submit();                            
    $('#form1').submit();
});

しかし、1 つの問題が存在します。それは、 のアクションでページを処理せず、 でアクションをform2処理するだけですform1

ちなみにワードプレスでやっています。何か案は?

4

2 に答える 2

0

各フォームのコンテンツを使用して動的に投稿を作成する必要があります。最初にフォームをパラメータ化し、そのデータを $.post または $.ajax を介して投稿する必要があります

例: var data = {};

$('#form1 input').each(function () {
    data[$(this).attr('name')] = $(this).val();
}

$('#form2 input').each(function () {
    data[$(this).attr('name')] = $(this).val();
}
$.post('mytarget/address/topost/to', data);

これは、同じ場所に投稿していることを前提としています。そうでない場合は、別の $.post ステートメントを使用する必要があります。

于 2011-12-09T20:54:58.257 に答える
0

HTML フォームのデフォルトの動作 ( でトリガーしているの.submit()は、最初のアクションが完了するとすぐにフォームのアクションに従うことです。それをオーバーライドするには、期待どおりに動作させるための手順を実行する必要があります。次々と提出。

現在のプロセスの課題は、送信が失敗した場合にフィードバックを許可していないことです。ビューが問題があることをユーザーに通知できるようにする送信の結果のインジケーターはありません。また、最初の送信が失敗した場合に 2 番目の送信が盲目的に送信されるのを防ぐものもありません。

これを実現するには、次の 2 つの方法があります。

  1. フォームを組み合わせます。おそらく、これはコード設計に反しますが、
  2. Nest Ajax がサブミットします。これにより、ビューへの動的な「フィードバック」を取得し、最初の送信の成功に基づいて 2 番目の送信を開始/停止することができます。2 番をオーバーライドするデフォルト アクションはありません。

いくつかの考慮事項:

  • フォーム内でボタンを使用すると、「デフォルトのオーバーライド」を行わない限り、デフォルトでフォームが送信されます
  • ajaxルートを使用する場合.serialize()は、フォームで使用して、IDごとにIDを指定せずに値を取得します
于 2011-12-09T20:57:26.630 に答える