2017-09-18 3 views
-1

jQuery​​で特定の(サブ)ページを読み込みます。jQueryのフォームを.load()にリダイレクト

このサブページには、いくつかのフォームが含まれています。

フォームのactionにリダイレクトしたい場合は、サブミットをフォームに置き換えて応答するスクリプトの出力​​を送信する必要があります。

が問題困難にするために、フォームのいずれかを持ってい onsubmit属性:

onsubmit="$.post(this.action, $(this).serialize(), function(msg){if(msg!='') alert(msg); else alert('Data should update in a few minutes.')}); return false"

私の問題を解決する最も簡単な方法は何ですか?

+0

彼らはすべてajaxを使用しなければなりません。次に、コンテナの内容を応答に置き換えます。比較的シンプルですが、望ましくない副作用の可能性が高いため、途中で作業しなければなりません。 –

+0

@KevinB質問は、フォームコードを変更せずにAJAXを使用する方法です(何らかの理由で 'onsubmit'ハンドラを操作するなど) – porton

+0

これは確かに可能です*、それに幸運です。あなたのケースでは、それらのうちの1つがonsubmitであることを考えれば、フォームが処理できるすべての可能な方法をオーバーライドする作業がたくさんあるでしょう。上書きしているフォームのhtml/jsを変更できない場合は、非常に苦労します。 –

答えて

0

私は良い十分な解決策作るために管理:私も「いいえ」ならば、ユーザーの回答を実行するためにmy_submit_handlerを防ぐために、ロードされたHTMLのサブページのonsubmit属性にevent.preventDefault(); event.stopImmediatePropagation()return falseを置き換え

function my_submit_handler() { 
    event.preventDefault(); 
    $.post(this.action, $(this).serialize(), function(data){$('#main-board').html(data)}); 
} 

$(function(){ 
    $('form').submit(my_submit_handler); 
}); 

を。

+0

これは、onsubmit = "$。post(...)"の場合にダブル・サブミットを引き起こしませんか?そうではありません。グローバルハンドラを実行していないだけです。 –