2011-01-27 18 views
0

jquery.simpleModalを使用してモーダルウィンドウ内にフォームがあります。 simpleModalは最初のdivの内容をクローンしてモーダルダイアログを作成するので、モーダルダイアログが作成された後にイベントハンドラを再バインドする必要があります。フォームがモーダルダイアログをもう一度開く(ハンドラが配線されていない提出することが表示されます、私はモーダルダイアログを開いた場合、その後、再びそれを開き、それを閉じ、しかしJavascriptイベントハンドラが起動しない

function showForm() { 

    $('div.contactUs').modal({ 
     opacity: 80, 
     overlayClose: true, 
     autoResize: true 
    }); 

    var container = $('.simplemodal-container'); 
    container.find('li.phone input').mask('(999) 999-9999'); 
    container.find('li.comments textarea').maxChar(1000, { indicator: 'div.commentLength span' }); 
    container.find('form').submit(function() { 

     try { 
      var form = $(this); 
      var action = form.attr('action'); 
      var data = form.serialize(); 
      $.post(action, data, function (result) { 
       form.html(result); 
       showForm(); 
      }); 
     } catch (e) { 
      alert(e); 
     } 

     return false; 
    }); 

} 

:私のコードは次のようになりますsubmitをクリックすると、ajaxハンドラが起動するのではなく、ページ全体のポストバックが行われます)。私は他のものが再バインドされていることを確認しました(入力マスクと最大文字数の制限事項)、なぜサブミットハンドラはないのですか?

答えて

0

.bind('submit',function(){})の略語であるので、初めて関数をバインドすると、クローンの関数を再バインドせずに問題を解決できます。 .live()は、イベントを現在の要素だけでなく、今後セレクタに一致する動的に作成された要素にバインドします。

+0

これで問題は解決しましたが、なぜリバインドが開始しないのか不思議です。もし誰かがそれに答えることができるなら、私は彼らに答えを与えるでしょう。さもなければ私はあなたに信用を与えるでしょう。 – Chris

関連する問題