我的代码:
<div id="queryPage">
<div id="queryToolbar" class="row" style="display: block;">
<div id="query-option-panel" class="col-md-offset-1 col-sm-offset-1 col-xs-offset-1">
</div>
</div>
<div id="queryModal" class="modal fade" style="display: none;">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-body">
<form role="form" method="GET" class="query-form form-horizontal" id="query-form" style="display: block;">
...
<div id="screen" class="Screen"></div>
</div>
我的骨干观点:
module.exports = Backbone.View.extend({
tagName: 'div',
events: {
'click #saveReportBtn': '_handleSaveReport',
'click #saveQuery': '_handleSaveQuery',
'keydown #queryToolbar': '_enter',
},
_enter( event ) {
console.log('event target:', + event.target.name + ', ' + event.currentTarget.name); // eslint-disable-line no-console
},
...
keypress事件应该被#queryToolbar监听,但为什么仅当#query-form加速时,它可以被捕获。
由于
更新
我的代码:
events: {
'keydown': '_enter',
},
_enter( event ) {
console.log('event target:', + event.target.name + ', ' + event.currentTarget.name); // eslint-disable-line no-console
if ( event.keyCode === 13 ) {
console.log('enter key down'); // eslint-disable-line no-console
}
if ( this._getReportId() > 0 ) {
console.log('save query'); // eslint-disable-line no-console
} else {
console.log('save report'); // eslint-disable-line no-console
}
},
当弹出查询表单(图1)时,我可以看到登录控制台(图2)。但是当查询表单没有弹出时,当输入键时,我看不到任何东西。困惑。
答案 0 :(得分:0)
将您的事件处理程序编写如下
_enter: function(event){
console.log('event target:', + event.target.name + ', ' + event.currentTarget.name); // eslint-disable-line no-console
}
现在你正在做的只是调用一个你从未定义过的函数。