问题标签 [javascript-events]
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 - Javascript 事件未按预期顺序触发
因此,我当前的项目还有另一个小的 JavaScript 问题:JS 事件没有按照我期望的顺序触发。
假设我有一个带有 onBlur 事件的文本字段,该事件触发一个 AJAX 调用,该调用在服务器上进行一些计算(我正在使用 .NET 3.5 的带有 JSON 的 WebServices)。它的回调方法使用计算结果填充一个充满文本字段的页面。
我还有一个带有 onClick 事件的按钮,它启动不同的计算,但它依赖于在其 onClick 事件的结果有效之前完成文本字段的 onBlur 事件。
我有一个简单的互斥锁,它工作得很好,直到出现以下情况:用户更改了其中一个文本字段中的值但还没有离开它,所以焦点仍然在文本字段上。当文本字段具有焦点时,他们单击具有 onClick 事件的按钮。 通常情况下,浏览器(在本例中为 IE7)会在文本字段的 onBlur 事件之前触发按钮的 onClick 事件!
这会造成一些破坏,我不知道如何强制执行被触发的事件的顺序。我的小互斥锁的工作方式如下:当任何事件被触发时,我设置一个表示“等待回调”的标志。任何触发的后续事件在执行任何操作之前都会检查标志。在回调中将标志重置为 false。
那么,有什么想法吗?我想我几乎想让所有的 Web 服务调用同步,但我不知道是否有一种简单的方法可以做到这一点。
我尝试过的其他事情或您应该知道的事情: - 禁用文本字段的 onBlur 中的按钮 - 它们的 onClick 在被禁用之前仍然会触发 - 请记住,这只发生在编辑文本字段并立即单击按钮。如果用户在单击按钮之前单击空白区域以触发文本字段的 onBlur,则一切正常。
编辑:
经过一些评论和更多测试,这就是我想要做的:
在文本字段的 onBlur 中,我想禁用该按钮,以便它的 onClick 事件不会触发。但是,当我编写代码时,onBlur 事件会触发,我可以看到按钮被禁用,但它的 onClick 事件仍在触发。
这是一些示例代码。 有时会发生 onClick 事件,有时不会发生。 如果您将 setTimeout 设置为 500 毫秒左右,它似乎总是会阻止它。也许这是一个选择...
更新:
我更新了我发布的代码以反映一些问题,所以你可以看到我是如何测试这个的。当您将焦点放在文本字段上然后单击按钮时,该按钮的 onMouseDown 事件会在文本字段的 onBlur 事件之前触发。因此,我可以设置一个标志,以便我知道他们试图单击该按钮。然后在由文本字段的 onBlur 事件触发的 AJAX 调用的 onSuccess 回调事件中,我可以查看是否设置了按钮标志(所以我知道他们试图单击它)并触发该事件(禁用其他所有内容以便它可以完全的)。表单上只有几个按钮需要这种行为,所以我认为这个解决方案现在就足够了。
javascript - 我如何识别哪些事件已通过 JavaScript 绑定?
可能的重复:
如何使用 FireBug(或类似工具)调试 Javascript/jQuery 事件绑定
如何在 DOM 节点上查找事件侦听器?
如何通过 JavaScript 检测哪些事件已绑定到 DOM 元素?在下面的示例中,我希望能够看到 click 事件已绑定在我的“可点击”跨度上,并且如果可能的话,可以从alert
-line 进行调试。
我可以使用像 Firebug 这样的 Web 开发人员实用程序来做到这一点吗?
javascript - 事件监听器的问题
在我尝试学习核心 JavaScript 的过程中,我现在正在学习 EventListeners。
我的问题是 EventListener 下面的代码没有在 IE 中被触发(在 Firefox 和 Chrome 中工作得很好)。
有人可以告诉我我做错了什么吗?
我的代码是:
javascript - 将 onload 函数添加到打开的窗口
如何向onload
打开的窗口添加功能?(目标是“自我”,不是window.open
,只是一个常规链接)
有可能onbeforeunload
吗?还是添加onclick
到“正常链接”?
我的意思是这样的:
javascript - 事件处理程序不适用于创建的元素
好吧,标题可能根本没有任何意义。但无论如何,我会放一些简单的代码来澄清它。
我正在使用 JQuery 1.3.2
这是我的 JS
在 html 中,我有一个超链接 id='test' 和一个 id='result' 的 div。我期望这个 JS 代码是当我点击测试时,它会显示“Hello World”。之后,当我单击“Hello World”时,它应该显示“Test #2”
任何建议都非常有帮助...
谢谢你。
php - 鼠标悬停的 Pchart
我的网站上有 pcharts。我想为客户端设施添加一些javascript函数。如果任何用户将鼠标悬停在图形上,它会在工具提示上显示值。可能吗?谁能知道我该怎么做?请帮我。
javascript - 如何使用 Jquery 在 ModalBox 中获取表单输入
我正在使用 jQuery 开发我的网站。对于私人消息功能,我现在所拥有的是显示一个 ModalBox(对话框)。因此,每当用户想要查看消息时,他们都会显示一个带有收件箱的对话框。现在,在那个 ModalBox 中,我有一个“撰写”部分,用户可以在其中发送消息。我的问题是,当用户提交表单时,我们如何在不必实际提交的情况下检索这些输入?因为,我已经尝试过了......,当我执行“submit()”时,它关闭了 ModalBox。
任何帮助,将不胜感激。
javascript - Javascript检测鼠标上的控制键
我已经搜索了很多,似乎无法找到令人满意的解决方案。我希望有人能帮帮忙。
在我使用 jQuery 的同时,我也在编写数千行 Javascript。所以一个“纯”的javascript解决方案就可以了。
我正在尝试确定控制键是否在 mouseup 事件上被物理按住。就是这样; 没有其他先决条件。有谁知道如何可靠地跨浏览器做到这一点?
我尝试通过注意何时按下和释放键来将其存储在状态变量中:
然而,这真的行不通。如果您使用 firebug 进行测试并观察控制台,您会看到似乎发生了自动重复,并且值切换。
我检查了 mouseup 事件,看看那里是否有任何有用的东西,但无济于事:
任何帮助,将不胜感激。
javascript - Javascript - 以编程方式调用事件
假设我使用 addEventListener 或 attachEvent(取决于浏览器)向对象添加事件;以后可以以编程方式调用这些事件吗?
使用如下对象添加/删除事件处理程序:
还是我需要存储每个处理程序的副本并只添加一个 Event.invoke(...) 函数?
编辑:另外,jQuery 不是一个选项:D
javascript - jQuery,我如何将 args 传递给事件处理程序?
如何将 args 传递给事件处理函数?这会在页面加载时运行该功能,这不是预期的效果。我需要这个例程“validateText”来针对几个不同的文本框、下拉组合运行。我可以重复使用“validateText”而不是为每个文本/下拉组合创建一个吗?