2011-12-06 13 views
0

私は、PHPの関数を経由してフォームを表示しています提出することはできませんし、エラーを表示するようにフォームを更新し、jQueryを使ってフォームを送信値を処理するためにvia jQueryに投稿します。プロセッサがエラーを検出した場合は、エラー配列をパラメータとしてgetLoginForm関数を呼び出します。フォームが再表示されると、エラーがフィールドの下に表示されます。フォームが再び

問題は、プロセッサフ​​ァイルがフォーム全体を返し、古いフォームと交換されてしまうことです。これは問題だと思います。 jQueryはこの新しく作成されたフォームについて知ってはいけないので、フォームを再度送信しようとすると何もしません。

この問題を解決するための方法は何ですか?

おかげで、 ライアン

UPDATE

jQueryの提出ハンドラは:

$('form').submit(function(e){ 
     var formElement = $(this); 
     var data = formElement.serialize(); 
     var page = 'process.php?p=' + formElement.attr('name'); 
     formElement.find('button[name=commit]').attr('disabled', 'disabled').addClass('disabled'); 
     formElement.find('.message').html('<div class="pending">Sending your request... please wait...</div>'); 
     $.post(page, data, function(response) { 
      formElement.html(response); 
     }); 
     e.preventDefault(); 
    }); 
+2

jQueryフォーム送信ハンドラまたはクリックハンドラを共有してください。 – VNO

+0

オリジナルフォームを表示する –

答えて

0

"ライブ()" 動的に作成されたオブジェクトのイベントにバインドするために使用してみてください。これを行うには

、あなたがするようにコードを変更します:イベントにバインドする「ライブ」を使用

$('form').live('submit', function() { ... 

jQueryのセレクタにマッチする現在および将来のすべての要素にバインドします。フォームを上書きしているので、これは新しい要素です。その結果、現在のコードはsubmitイベントにバインドされません。

+1

'live()'は廃止されました.jQuery 1.7+ 'on()'を使用している場合は 'delegate()'を使用する方が良いです –

+0

これはうまくいきませんでした。フォームはエラーを含む新しいフォームに置き換えられ、そのフォームはバインドされません。もし私が推測しなければならないのは、$( 'form')。submit()関数の中に何か必要なのでしょうか?新しいフォームがフェッチされた後、 – NightHawk

+0

ロリー - 良い先端。ありがとう! – BradBrening