2011-12-09 7 views
0

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

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

しかし、一つ問題が存在し、それは次のようになります。それはform2のアクションでページを処理しない、それは単にform1でアクションを処理します。

ところで私はこれをワードプレスでやっています。何か案は?

+0

'target'属性をフォームの1つ(1つ)に設定したり、サブミッションをフレーム、または新しいページ(' _blank')に向けることができます。 –

答えて

0

各フォームのコンテンツを使用して動的に投稿を作成する必要があります。まずフォームをパラメータ化し、$ .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ステートメントを使用する必要があります。

0

HTMLフォームのデフォルトの動作(.submit()でトリガーしているのは、最初のアクションが完了したときにフォームのアクションにすぐに従うことです。これを上書きするには、あなたの現在のプロセスの課題は、送信が失敗した場合にフィードバックを許可していないことです。ユーザーが通知を送信できるようにする指標はありません。問題があるとか、最初のものが失敗した場合に第二のものが盲目的に失敗するのを防ぐためのものはありません。

あなたはmaこれが起こる:

  1. フォームを組み合わせます。しかし、これはあなたのコードデザインに反しますが、
  2. ネストAjaxが提出します。

    • :これはデフォルトの動作をオーバーライド番号2

いくつかの考慮事項で、あなたが最初の成功に基づいて、第2の提出を視野に動的な「フィードバック」を取得し、起動/停止することができますフォーム内のボタンを使用すると、デフォルトを上書きしない限り、デフォルトでフォームが送信されます

  • ajaxルートに行く場合は、フォームに.serialize()を使用して値を取得する必要はありません。 id
  • 関連する問題