9

我的backbone.js 表单有一个文本字段(没有提交按钮)。我需要在视图中捕获提交事件(使用回车键)。下面是示例代码。不知何故,在按 Enter 时不会调用提交方法。相反,表格会重新加载。

脚本 :

var FormView = Backbone.View.extend({
    el: '#form',

    events: {
        "submit": "submit",
    },

    initialize: function () {
        console.log("initialize");
    },

    submit: function (e) {
        e.preventDefault();
        console.log("submit");
    }
});

new FormView();

HTML:

<form id="form">
  <input type="text"/>        
</form>
4

2 回答 2

21

将此添加到您的 Backbone 视图中:

events: {
  'submit form': 'submit'
}

另外,请注意,在您的 HTML 中,必须定义表单操作。

如果您没有定义操作,请执行以下操作:

events: {
  'keyup': 'processKey'
}

processKey: function(e) { 
  if(e.which === 13) // enter key
    this.submit();
}
于 2013-08-25T04:44:45.867 回答
3

如果您在捕获提交事件时遇到问题,请确保在您的视图中定义了您的“el”属性。

var myView = Backbone.View.extend({
    el: $(body), 
    events: {
       "submit form": "doMethod" 
    }, 
    doMethod: function(e) {
        e.preventDefault();  
        console.log('form fired');
    }  
}); 
于 2014-02-27T16:20:47.487 回答