问题标签 [focusin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jquery - jquery focusin() 和防止冒泡
更新 2:
我睡在上面,然后编写了一些示例代码来尝试进一步找出问题所在。
这是一个使用 firebug 的 console.log 的示例,向您展示哪个对象触发了 focusin 事件:
1)点击第一个链接:黄色div显示2)点击tab键:它应该进入黄色div内的链接
它这样做了,但随后它触发了 focusin 事件,并且由于某种原因,它似乎再次冒泡到红色 div,然后被告知关闭黄色 div。
这甚至在我告诉黄色 div 不要传播焦点事件之后:
然后,我仅在关注内部 div 之后尝试将 focusin 事件附加到父 div 上。
发生的情况是,在内部 div 中的第一个链接上的选项卡确实在父 div 上设置了 focusin 事件。这很好!但是,然后在 innerdiv 中的下一个链接中跳出 focusin 事件再次关闭 div。
所以,我想我仍然很难过。看来我无法阻止专注于冒泡。想法?理论?
下面是原帖...
==============================
我正在通过 onclick 事件显示一个 div。如果您单击 div 外部,我想隐藏它。为此,我在正文上绑定了一次单击事件:
在 div 本身中,我告诉它不要传播事件,以便在 div 中实际单击不会触发对主体的单击:
这按预期工作正常。
如果 div 中有一个标签,我也想隐藏 div。
我的想法是,在那种情况下,我可以在 body 上使用 focusin 事件:
同样,我不希望事件从 div 本身中冒出来,所以添加了这个:
这不起作用。在 myDiv 中更改元素内的焦点会触发 body 上的 focusin 事件。
这可能是 jQuery 中的错误吗?如果是这样,有没有更好的方法来实现这一点?
更新:
问题似乎是似乎没有办法确定 DIV 是否失去焦点,因为它永远不会有焦点。我的解决方案逻辑是查看 ELSE 的焦点是否在 div 之外(因此使用 focusin),但我遇到了 div 中的 focusin 事件似乎通过在身体上触发而冒泡的问题。
现在,我认为我的解决方案必须是在弹出窗口中添加一个 CLOSE 元素,然后让人们必须明确地触发它。但并不理想,尤其是对于键盘导航。
javascript - jquery:当我单击一个 div 时,将焦点放在一个文本框上
在 Jquery 1.4 之前,这曾经是将焦点调用到文本框的方式,现在它不起作用。当我单击按钮时,我想将焦点调用到文本框,我所说的“焦点”是指我希望文本框像刚刚被点击一样,这样用户就不必点击文本框.
.focus
应该自动点击我想要的文本框,为什么它现在不起作用?它在 Jquery 1.4 中崩溃了。我只需要知道该怎么做。
focus - Backbone.js 焦点事件触发两个事件 focus 和 focusin
我使用 Backbone.js 的代码的视图部分是这样的:
每当输入元素获得焦点时,都会调用该函数两次。我尝试使用打印堆栈跟踪console.trace()
。它表明,一次函数调用来自focus事件,而下一次来自focusin。
我试图找出如何防止其中一个事件被解雇,但结果却一无所获。我怎样才能解决这个问题?
javascript - 如何检测“focusin”支持?
感谢Perfection kills,我们可以使用以下 JavaScript 来检测事件支持:
这仅在我需要它的时候起作用:检测mouseenter
支持;hasEvent('mouseenter')
将在 Chrome、Firefox 等中返回 false,因为它应该。
但现在我正在尝试“修复”不支持focusin
andfocusout
事件的浏览器。根据 PPK,这基本上只是 Firefox。不幸的是,Chrome 和 Safari 被列为“不完全”支持,原因如下:
Safari 和 Chrome 仅使用 addEventListener 触发这些事件;不是传统的注册方式。
一般来说,这很好。addEventListener
反正我只会用。但是,这确实意味着通过检测支持elem.onfocusin !== undefined
不起作用。我测试了它,这是真的:
No...
Chrome 中的上述警报!有什么方法可以检测浏览器是否支持focusin
,而不使用浏览器嗅探?
javascript - 为什么 event.bubbles 对于“focusin”和“focusout”是错误的?
几分钟前,我回答了这个问题:
jQuery 中的 focusin/focusout 与 focus/blur 有什么区别?
答案是:
简短的回答:focusin
泡沫,focus
没有。
focusout
泡沫,blur
没有。
我测试了一下,确实如此,但是在尝试设置DEMO时遇到了一件奇怪的事情:
focusin
给focusout
我e.bubbles == false
它是 jQuery 的错误还是我在这里错过了明显的东西?
jquery - 在焦点上接收两个“focusin”事件
我在做什么
在代码的某些部分,我有一个focusin
事件监听器,而在另一部分以编程方式将焦点设置在input
. 在 Chrome、Safari、Firefox 上,事件监听器被调用一次,但在 IE(包括 IE10)上,它被调用两次。我用 jQuery 注册监听器并用 jQuery.on()
设置焦点.focus()
。有关显示此行为的示例的完整来源,请参见下文,如果您愿意,可以运行该示例。
问题
- 即使不使用 jQuery,IE 也会触发
focusin
两次。只有在以编程方式设置焦点时才会这样做,而不是在用户选项卡或单击字段时。为什么?它只是一个 IE 错误,还是 IE 有充分的理由这样做? - 不管是不是 IE 的 bug,jQuery 不应该在这里解决 IE 和其他浏览器的区别吗?换句话说,这样做是不是一个 jQuery 错误?
- 你将如何解决这个问题?(也就是说,我可以让每个焦点只运行一次的代码,无论焦点是通过编程方式设置还是由用户设置。)
完整来源
contenteditable - 当内容为空时,插入符号在 contenteditable 中消失
当 div[contenteditable] 为空时(如 $(this).html("")) 然后插入符号消失了。
是虫子吗?我还找到了其他一些解决方案。使用 setTimeout 函数。但这对我来说不是完美的解决方案。当我使用许多 contenteditables 部门时,使用 Tab 键移动焦点。那么该解决方案无法正常工作。
当我在 Ubuntu 12.04 上测试时,
在 Firefox 20.0 点击事件中:插入符号消失,
在 Chrome 25.0 Focusin 事件中:插入符号消失了。
你可以测试一下我的小提琴 点击黄色区域,或者其他区域。
javascript - 如何从焦点排除中排除 Id
使用 Jquery,当您在设置“focusout”时单击焦点区域外的任意位置时,才会调用 focusout。
如何从激活“focusout”功能中排除某些 id。?
例如这里。
您有一个输入文本字段( id="A"),它在焦点上隐藏了一些 div 并在它失去焦点时显示该 div,所以但现在它显然会在您单击此之外的任何位置时显示该 div ("#A ") 输入字段。
问题是,你如何设置一些 id(可能是一个选择字段(Id="B" 旁边),而不是触发“focusout”功能。希望它有意义。
jquery - 聚焦和模糊没有被抓住
我试图让一个 div 在文本框获得焦点时出现,并在文本框失去焦点时消失。这应该发生在 iPad 的纵向模式下(因此检查 w