Console.log 在 Backbone 中提交并继续
Console.log comes and goes upon submission in 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);
因此,当我在输入按钮上单击提交时,我希望看到 "button clicked"。使用 chrome 开发人员工具时,我能够看到控制台日志,但由于某种原因它出现又消失。有谁知道为什么会这样?
正如评论已经提到的,您正在捕获提交事件,但您没有阻止其默认行为(向服务器发送 GET 请求并将表单数据附加为参数)。
要停止由于此请求而刷新页面,您可以在 checking()
方法中调用 e.preventDefault()
。
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")
}
});
我的代码中有一个我似乎无法弄清楚的小问题。
(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);
因此,当我在输入按钮上单击提交时,我希望看到 "button clicked"。使用 chrome 开发人员工具时,我能够看到控制台日志,但由于某种原因它出现又消失。有谁知道为什么会这样?
正如评论已经提到的,您正在捕获提交事件,但您没有阻止其默认行为(向服务器发送 GET 请求并将表单数据附加为参数)。
要停止由于此请求而刷新页面,您可以在 checking()
方法中调用 e.preventDefault()
。
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")
}
});