我在表单上有“提交”事件。在 IE8 中,如果我在不输入任何信息的情况下提交表单,只需单击提交按钮,它就会发布表单,并且它永远不会被 Backbone 中定义的事件捕获或处理。但是,如果我只是点击一个输入字段,然后点击提交,事件就会被处理。
主干事件是这样设置的:
events: {
'submit #form': 'submitForm',
},
submitForm: function(e){
e.preventDefault();
}
知道为什么会这样吗?
更新:这是一个表单示例:
<div id="form">
<form action="/action" method="post">
<input type="text" name="name" />
<button type="submit" value="Submit"></button>
</form>
</div>
它实际上只在 IE8 中,并且只有在提交之前没有先单击表单中的元素时才会出现。该事件在 FF、Chrome、IE9+ 中触发没有问题。但仅在 IE8 中,如果您只单击提交,不执行任何其他操作,则不会触发该事件。
最佳答案
某些事件不能使用此方法委托(delegate)。 'focus' 和 'blur' 不起作用,在 IE8 和更低版本中 'change'、'submit' 和 'reset' 也不起作用。它实际上在 annotated source of Backbone 中但出于某种原因不在 the documentation 中.
JQuery 的文档实际上指出 Backbone 使用的方法 ( $.delegate ) 现在已被 $.on 取代它能够处理这些类型的事件。
所以你的选择是:
- 重载 Backbone.View.delegateEvents 以使用 $.on 而不是 $.delegate
- 手动绑定(bind)事件,如 EndangeredMassa 所示。
关于javascript - IE8 无法识别 Backbone.js 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11588215/