2016-11-13 69 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(); 
});