2011-07-31 18 views
1

私はページに多数のチェックボックスを持っており、そのうちの1つが変更され、応答をキャプチャするといつでも自動提出したいと思います。このコードを実行すると、最初のコンソールメッセージが表示されますが、2番目のメッセージは表示されません。フォームが決して提出されないようです。ハンドラを追加すると、Jqueryサブミットが機能しません。

<script type ="text/javascript" > 
    $(document).ready(function(){ 
      $('.project_checkbox').change(function(){ 
       console.log('this does get called'); 
       $(this).parent().submit(function() { 
        console.log('this never gets called'); 
        return false; 
       }); 
      }); 
    }); 
</script> 

ハンドラを削除して実行すると、フォームが送信され、ブラウザが適切なフォームのURLを開きます。私はそれは、チェックボックスの正しい谷を読んでいることを出力から伝えることができます。この場合のハンドラを追加することが提出を殺す理由

<script type ="text/javascript" > 
    $(document).ready(function(){ 
      $('.project_checkbox').change(function(){ 
       console.log('this does get called'); 
       $(this).parent().submit(); 
      }); 
    }); 
</script> 

誰もが言うことはできますか?

答えて

1

.submit(function() { }).submit()とは異なります。最初のフォームは、フォームがサブミットされたときに呼び出される関数を設定します。これは.bind('submit', function() { })に相当します。 2番目のイベントは実際にサブミットイベントをトリガーします。これは.trigger('submit')に相当します。詳細はhttp://api.jquery.com/submit/を参照してください。

+0

ああ、ありがとう!私は両者の区別を理解していませんでした。この情報でSubmit APIページを再読したので、より意味があります。 –

1

イベントを$(this).parent()にバインドしているため、フォームが送信されたときにのみ実行されます。フォームを送信するには、バインディングの直後にメソッドを呼び出します:$(this).parent().submit

関連する問題