2015-07-11 54 views
1

我的代碼中有一個小問題,我似乎無法弄清楚。Console.log來來去去,在Backbone中提交

(function($){ 

     var FormLoanView = Backbone.View.extend({ 
      tagName: 'div', 
      template: _.template('<form> Annual Income: <input></input> <br> Monthly Payment: <input></input> <br> Down Payment: <input></input> <br> APR: <input></input><input type="submit" value="Submit"></form>'), 
      initialize: function(){ 
      var $data = this.$el.html(this.template()) 
      $('body').html($data) 
      }, 
      events:{ 
      'submit': 'checking' 
      }, 
      checking: function(){ 
      console.log("button clicked") 
      } 


     }) 


     $(document).ready(function() { 

      var LoanView = new FormLoanView({ 
      }); 

     }); 
     })(jQuery); 

所以,當我點擊我的輸入按鈕提交,我希望看到「按鈕點擊」。使用chrome開發人員工具時,我可以看到控制檯日誌,但由於某種原因它出現並消失。有誰知道爲什麼會發生這種情況?

+0

表單提交的默認操作是什麼? –

+0

耶看起來像表單正在做頁面刷新,因此爲什麼console.log消失。 – theamateurdataanalyst

+0

這是因爲提交表單,以及將表單提交給服務器,除非您另有說明。 –

回答

2

正如註釋已經提到的那樣,您正在捕獲提交事件,但是您不會阻止其默認行爲(向作爲參數附加表單數據的服務器發送GET請求)。

要停止頁面刷新由於此請求,您可以撥打在您的checking()方法。

var FormLoanView = Backbone.View.extend({ 
     ... 
     initialize: function(){ 
     var $data = this.$el.html(this.template()) 
     $('body').html($data) 
     }, 
     events:{ 
     'submit': 'checking' 
     }, 
     checking: function(e){ 
     e.preventDefault(); 
     console.log("button clicked") 
     } 
    }); 
+0

謝謝。 preventDefault真棒。 – theamateurdataanalyst