2012-11-04 203 views
0

我想做一個表單,所以當用戶單擊按鈕,然後它會提交,但問題是,即使我不按提交按鈕,它仍然繼續功能。這裏是我的代碼窗體不斷提交事件沒有按提交按鈕

$(function() { 
var url, container, form, 
    View = { 
     init: function() { 
      container = $('.container'); 
      form  = $('.search#form'); 
      console.log(form); 
      View.loadViews(); 
      $(document).on('submit', '#form', View.findView()); 
     }, 
     findView: function() { 
      console.log('helllo'); 
      return false; 
     }, 
     loadViews: function (view) { 
      $(container).load('search.html'); 
     } 
    }; 
View.init(); 
}); 

在代碼行$(document).on('submit', '#form', View.findView());上面不斷給你打電話findView()方法,而我想打電話給它,當用戶點擊提交按鈕。我怎樣才能解決這個問題?

回答

4

當你使用$(document).on('submit', '#form', View.findView());綁定它時,你基本上正在調用該函數,並嘗試將提交事件綁定到該函數返回的內容,這是不正確的。由於findView()正在恢復false,這等於說$(document).on('submit', '#form', false);

的需要綁定View.findView()象下面這樣:

$(document).on('submit', '#form', View.findView); // note, no() at the end 
+0

*可能*工作。這取決於如何編寫findView。如果它依賴於'this'是'View',它將會中斷。 – Quentin

+0

@Quentin - 在這裏我認爲'View'被視爲更像是一個靜態單例,它根本沒有被明確地實例化,所以'this'可能在這裏沒有圖片。但是,是的,這是值得注意的。 – techfoobar

+0

給自己的提示:請仔細閱讀問題。你是對的,這將起作用(除非問題中的代碼已經過於簡化)。 – Quentin

1

你應該傳遞的功能無法正常返回的值的參考。

$(document).on('submit', '#form', View.findView);