问题标签 [onblur]
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.
javascript - 当搜索字段失去焦点时使搜索菜单消失,但仍允许用户单击链接
在我的网站上,我有一个搜索框(文本输入字段)。当用户点击它并开始输入文本时,会出现一个链接菜单。菜单通过 JQuery 出现 - 以下命令使菜单出现:
当用户单击搜索框时,我希望菜单消失。
最简单的方法是使用以下命令:
但是,如果我这样做,那么当用户单击菜单中的链接时,文本输入字段会失去焦点,因此菜单会在用户被带到选择页面之前消失。我怎样才能使它在搜索字段失去焦点时菜单消失,(但如果用户在搜索字段失去焦点之前点击链接,她/他仍然能够被带到链接)?
javascript - blur() 与 onblur()
我有一个带有 onblur 事件监听器的输入标签:
通过 JavaScript,我想在此输入上触发模糊事件,以便它依次调用该doSomething
函数。
我最初的想法是调用模糊:
但这不起作用(尽管没有错误)。
这样做:
这是为什么?.click()
将通过 onclick 侦听器调用附加到元素的 click 事件。为什么不blur()
以同样的方式工作?
javascript - Javascript OnBlur 不工作
我有一个默认禁用的文本框... onclick 可以工作并使其可以输入,但是当我单击单选按钮时.. 它不会再次禁用文本框
有什么线索吗?
提前致谢
李
javascript - 暂时删除 IE 中的“onblur”处理程序
我想知道这里是否有人可以帮助我解决这个问题。
我需要暂时禁用输入字段的“onblur”属性中的代码,然后重新启用它。我需要这样做的原因是 b/c 我的工作流程如下:
1) AJAX 事件是由输入字段的“onblur”属性触发的,这是由于用户在该字段上切换到下一个字段而导致的。
2) 页面已更新,我的 Javascript 代码从“ onafterajax ”钩子中调用。
3) 我的代码对 DOM 进行了一些严重的重新排列,导致失去对当前输入字段的关注。所以,我必须手动恢复焦点。我已将焦点处理程序附加到所有输入字段,因此我可以跟踪哪个字段最后获得焦点,因此我知道将焦点放在哪里。
4)我在正确的输入字段上调用.focus(),由于某种原因导致' onblur' 在同一个输入字段上触发。这发生在所有浏览器中。这 a) 表明该领域仍然有重点?!b) 创建一个无限循环,因为步骤 1 再次执行...
为了避免无限循环,我做了以下事情。在执行任何 DOM 重新排列之前,我会这样做:
然后,在我完成了我的 DOM 黑客之后,我会这样做:
这适用于所有浏览器(FF、Chrome、Opera),除了 IE6。
在 IE6 中它有点工作。首先,为了让它在 IE 中工作,我不得不修改对“ setFocusAndRestoreBlur ”的调用,如下所示:
这具有在当前线程完成后运行代码的效果。出于某种原因,如果我尝试在同一个线程中设置焦点,IE 不尊重我已删除onblur处理程序的事实!
所以,通过这个修改,我第一次在几个字段中输入一些数字,一切都很好。我得到如下所示的日志输出:
在j_id390 中输入一些内容并关闭:
在j_id397 中输入一些内容并关闭:
但是,当我回到第一个输入字段,覆盖值并关闭标签时,我得到了这个:
大多数情况下,此循环会继续进行可变数量的迭代,然后在输入字段正确聚焦时停止。我见过几次循环似乎是无限的。
看起来 IE 不再尊重onblur处理程序的缺失?但只是有时?!
所以,这就是我感到困惑的地方。为什么 IE 行为不一致?我究竟做错了什么?有没有更好的办法?
任何想法,将不胜感激。
瓦尔
编辑:
我已经尝试过 JeanK 建议的方法。它仍然不起作用,但我从这次尝试中学到了一些可能有用的东西。
我用代理包装了原始的“onblur”函数,如下所示:
以及代理功能本身:
现在,我所要做的就是将this.allowBlur设置为最后一件事,我应该没问题。这就是问题所在。在所有其他浏览器中,当我修改 DOM 树时会触发 onblur 事件,因此它会正确地被阻止。但是在 IE6 中,无论我做什么,它都会在我的所有代码之后触发 onblur 事件。我什至试过这个:
在我将标志设置为 true 后,我的 this._proxiedBlur 仍然会被调用!
所以,问题就变成了——我需要在哪里重置我的标志,以便在 IE6 对 DOM 更改做出反应后执行?
javascript - 使用 jQuery onBlur 更改表单框的值
我正在寻找一个 jQuery 函数,该函数将在 onBlur 事件发生时更改其他输入框的值。在下面的代码中,我试图读取已更改的输入框的值,并使用它的值来操作其他输入框的值。最终,这将用作转换实用程序。我觉得我在这里很近,有人可以帮忙吗?
谢谢!
javascript - jQuery find(':focus') 未按预期运行
我正在制作一个小部件,它可以hover
通过showTracker
和hideTracker
功能滑入和滑出视图。如果它包含一个集中的表单元素,我想防止它滑出视图,所以我已经这样做了:
凉爽的。现在,如果有一个焦点区域,鼠标碰巧移出,它不会隐藏。不幸的是,这也意味着当该字段确实失去焦点时(并且该小部件再次隐藏的时候)它只是停留在那里。unHover 事件已经过去了。
所以我添加了这个:
这也有效 - 有一个我需要帮助的小错误!
如果焦点从跟踪器内的一个元素移动到也在 内的另一个元素,#tracker
跟踪器将隐藏。鉴于下一个表单元素具有焦点,我认为这if($('#tracker').find(':focus').length == 0)
将返回 false,但我想它没有。
.blur() 是在下一个元素获得焦点之前触发的情况吗?
我怎样才能解决这个问题?
javascript - 提交不应该用 jQuery 模糊 textarea?
我有一个带有模糊功能的文本区域:
blur()
当我单击下面的提交按钮时,我不希望这种情况发生。我该如何解决这个问题?
javascript - 如何从触发 jQuery 模糊事件中排除页面元素?
我有一个<input>
当专注于它时会显示一个建议下拉菜单。单击其他任何内容时,建议都会消失。问题是我似乎无法弄清楚如何做到这一点,因此当单击建议时<div>
,模糊事件不会运行。
下面是一些 HTML:
下面是一些 JavaScript:
javascript - tinyMCE 模糊事件
您好,当用户在 tinyMCE 文本区域中完成写入并单击外部某处(onBlur)时,我想做一些事情。到目前为止,我尝试过:
还
但它不会工作。
你能帮帮我吗。
javascript - 似乎一个元素的 onBlur 正在“覆盖”另一个元素的 onclick
我有两个要素:
和一个动态创建的(这都是自动建议程序的一部分):
好的,然后是对应于onblur
输入元素的事件函数,然后是对应于onclick
div元素的事件函数:
编辑:我如何onclick
在他们点击的元素上正确触发,而不onblur
首先隐藏 div 的事件,这使得onclick
毫无意义?但是,当文本框失去焦点时,我仍然希望保留建议 div 消失的功能。