2016-11-13 70 views
-2

下面是HTML代碼:骨幹提交stucked

<div id="overlay"> 
    <form action="/login" id="login_form"> 
     <input type="text" placeholder="Login" id="login_form-login"> 
     <input type="text" placeholder="Password" id="login_form-password"> 
     <input type="submit" value="Log in"> 
    </form> 
</div> 

這裏是骨幹代碼:

LoginForm = Backbone.View.extend({ 
    el: $("#overlay"), 
    events: { 
     "submit #login_form" : "login", 
    }, 
    login: function(e) { 
     e.preventDefault(); 
     console.log("hello backbone"); 
    } 
}); 

var login_view = new LoginForm(); 

登錄功能不會被調用。我知道主幹是關於模型和模板的,但是有沒有什麼方法可以將事件綁定到現有的html表單?

+1

你的代碼工作絕對沒問題。請按照這個小提示看看它的行動=> https://jsfiddle.net/randomfifaguy/cxhy47hj/1/ –

+1

當你調用'$('#overlay')''你確定存在'#overlay'嗎?也許你應該說'el:'#overlay'。或者更好的是,讓視圖創建,擁有並銷燬它自己的'el',而不是試圖綁定到一個現有的元素。 –

+0

雖然_mu太短,可能給了你你需要的東西,你應該在你的問題中包含一個[mcve]。 –

回答

0

那麼,我找到了解決方案。

mu is too short是正確的 - 當代碼執行時,#overlay還沒有存在。

這裏是修復:

$(document).ready(function(){ 
    var login_view = new LoginForm(); 
    login_view.show(); 
});