Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用主干对基于焦点事件的html控件进行一些更改_Html_Backbone.js_Input_Focus_Marionette - Fatal编程技术网

如何使用主干对基于焦点事件的html控件进行一些更改

如何使用主干对基于焦点事件的html控件进行一些更改,html,backbone.js,input,focus,marionette,Html,Backbone.js,Input,Focus,Marionette,我有一些html控件,如输入等。我想根据控件的焦点更新一些状态 例如: 我想找到一个获得焦点的输入id 我尝试了下面这样的方法,但它一直在调用该方法 events :{ 'focus #input' : "updateCurrentCell" }, updateCurrentCell: function(event) { alert('updateCurrentCell called'); // Update the current cell. } 我在这里做错了什么?在upd

我有一些html控件,如输入等。我想根据控件的焦点更新一些状态

例如:

我想找到一个获得焦点的输入id

我尝试了下面这样的方法,但它一直在调用该方法

events :{
  'focus #input' : "updateCurrentCell"
},

updateCurrentCell: function(event) {
  alert('updateCurrentCell called');
  // Update the current cell.
} 

我在这里做错了什么?

updateCurrentCell
中,尝试添加
控制台.log
消息,以确保它被反复调用,并且您没有无法关闭警报框的问题

但是如果函数一直被调用,那是因为输入字段一直在重新获得焦点。如果您有一些代码强制关注每次失去焦点时执行的“#输入”,则可能会发生这种情况


但是如果没有一个JSFIDLE重现这个问题,就很难诊断…

我不清楚你的问题。“它一直在调用方法”是什么意思?根据您显示的代码,每次输入获得焦点时都会调用该方法。如果你能拿出一个JSFIDLE来演示你的问题,这也会有帮助。嗨,David,谢谢你的回复,一旦控件获得焦点,根据我在那里的代码,它只需要发出一次警报,但是警报框没有关闭,并且一直显示警报框。这就是“它一直在调用方法”这句话的意思。谢谢大卫,知道这个问题真的很有趣,但仍然不知道为什么?如果我使用alert,它会出现此问题;如果我使用console.log,它会很好,并且只获得一次焦点。:)可能发生的情况是,当显示警报时,输入失去焦点,但当警报关闭时,输入恢复焦点(再次触发
updateCurrentCell
)。这可能是由于您正在使用某些自动聚焦代码(或js库)。此外,您可能希望使用不同于“焦点”的事件,例如“更改”、“按键”和/或“模糊”。@Anto:这里的主要教训是“不要使用
警报
进行调试”,这很容易意外地构建警报炸弹或改变应用程序的行为。