2011-07-31 40 views
1

我在頁面上有一堆複選框,我想隨時自動提交,其中一個被修改,並捕獲響應。如果我運行這個代碼,我可以看到第一個控制檯消息,但不是第二個。似乎表單從未提交過。當我添加一個處理程序時,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() { })。第二個實際觸發提交事件,相當於.trigger('submit')。有關更多信息,請參閱http://api.jquery.com/submit/

+0

啊,謝謝!我不是在理解這兩者之間的區別。現在我用這個信息重新閱讀提交API頁面,它更有意義。 –

1

您正在將一個事件綁定到$(this).parent(),所以它只會在表單提交時執行。要提交表單,請在綁定後直接調用該方法:$(this).parent().submit

相關問題