问题标签 [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.

0 投票
2 回答
890 浏览

javascript - 当搜索字段失去焦点时使搜索菜单消失,但仍允许用户单击链接

在我的网站上,我有一个搜索框(文本输入字段)。当用户点击它并开始输入文本时,会出现一个链接菜单。菜单通过 JQuery 出现 - 以下命令使菜单出现:

当用户单击搜索框时,我希望菜单消失。

最简单的方法是使用以下命令:

但是,如果我这样做,那么当用户单击菜单中的链接时,文本输入字段会失去焦点,因此菜单会在用户被带到选择页面之前消失。我怎样才能使它在搜索字段失去焦点时菜单消失,(但如果用户在搜索字段失去焦点之前点击链接,她/他仍然能够被带到链接)?

0 投票
3 回答
115639 浏览

javascript - blur() 与 onblur()

我有一个带有 onblur 事件监听器的输入标签:

通过 JavaScript,我想在此输入上触发模糊事件,以便它依次调用该doSomething函数。

我最初的想法是调用模糊:

但这不起作用(尽管没有错误)。

这样做:

这是为什么?.click()将通过 onclick 侦听器调用附加到元素的 click 事件。为什么不blur()以同样的方式工作?

0 投票
5 回答
2622 浏览

javascript - Javascript OnBlur 不工作

我有一个默认禁用的文本框... onclick 可以工作并使其可以输入,但是当我单击单选按钮时.. 它不会再次禁用文本框

有什么线索吗?

提前致谢

0 投票
2 回答
2637 浏览

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 更改做出反应后执行?

0 投票
4 回答
3204 浏览

javascript - 使用 jQuery onBlur 更改表单框的值

我正在寻找一个 jQuery 函数,该函数将在 onBlur 事件发生时更改其他输入框的值。在下面的代码中,我试图读取已更改的输入框的值,并使用它的值来操作其他输入框的值。最终,这将用作转换实用程序。我觉得我在这里很近,有人可以帮忙吗?

谢谢!

0 投票
3 回答
771 浏览

javascript - jQuery find(':focus') 未按预期运行

我正在制作一个小部件,它可以hover通过showTrackerhideTracker功能滑入和滑出视图。如果它包含一个集中的表单元素,我想防止它滑出视图,所以我已经这样做了:

凉爽的。现在,如果有一个焦点区域,鼠标碰巧移出,它不会隐藏。不幸的是,这也意味着当该字段确实失去焦点时(并且该小部件再次隐藏的时候)它只是停留在那里。unHover 事件已经过去了。

所以我添加了这个:

这也有效 - 有一个我需要帮助的小错误!

如果焦点从跟踪器内的一个元素移动到也在 内的另一个元素,#tracker跟踪器将隐藏。鉴于下一个表单元素具有焦点,我认为这if($('#tracker').find(':focus').length == 0)将返回 false,但我想它没有。

.blur() 是在下一个元素获得焦点之前触发的情况吗?

我怎样才能解决这个问题?

0 投票
4 回答
402 浏览

javascript - 提交不应该用 jQuery 模糊 textarea?

我有一个带有模糊功能的文本区域:

blur()当我单击下面的提交按钮时,我不希望这种情况发生。我该如何解决这个问题?

0 投票
2 回答
2198 浏览

javascript - 如何从触发 jQuery 模糊事件中排除页面元素?

我有一个<input>当专注于它时会显示一个建议下拉菜单。单击其他任何内容时,建议都会消失。问题是我似乎无法弄清楚如何做到这一点,因此当单击建议时<div>,模糊事件不会运行。

下面是一些 HTML:

下面是一些 JavaScript:

0 投票
6 回答
21357 浏览

javascript - tinyMCE 模糊事件

您好,当用户在 tinyMCE 文本区域中完成写入并单击外部某处(onBlur)时,我想做一些事情。到目前为止,我尝试过:

但它不会工作。
你能帮帮我吗。

0 投票
3 回答
5698 浏览

javascript - 似乎一个元素的 onBlur 正在“覆盖”另一个元素的 onclick

我有两个要素:

和一个动态创建的(这都是自动建议程序的一部分):

好的,然后是对应于onblur输入元素的事件函数,然后是对应于onclickdiv元素的事件函数:

编辑:我如何onclick在他们点击的元素上正确触发,而不onblur首先隐藏 div 的事件,这使得onclick毫无意义?但是,当文本框失去焦点时,我仍然希望保留建议 div 消失的功能。