javascript - 如何防止点击和模糊事件之间的竞争?

标签 javascript html angular

我的 Angular 代码是这样的>

<input type='text' (blur)='saveData()'>
<button (click)='navigateToPage2()'>

文本框被聚焦跳到按钮点击,两个事件之间存在竞速条件。

问题是按钮点击被忽略,因为模糊事件首先触发并将微调器带到屏幕上,同时它进行服务器调用以保存数据。

我该如何解决这个确切的问题?

是否有黑客可以在模糊事件之前触发点击事件?

最佳答案

尝试以下解决方案,而不是在模糊事件之前触发点击的黑客攻击:

为了更好地理解这一点,您需要了解特定事件触发的顺序:

  1. 鼠标按下
  2. 模糊
  3. 鼠标移开
  4. 点击

在这种情况下,您可以使用此订单对您有利。

尝试改用 Mousedown 事件,它会在 blur 事件之前触发。

此外,尝试运行此代码片段。会帮助你理解上面的顺序

    Type first in text box below and then click button <br/>
    <input type='text' onblur="console.log('blur');" />

    <button onclick="console.log('click')" 
      onmouseup="console.log('mouseup')" 
      onmousedown="console.log('mousedown')" > Type first and then this click button</button>

关于javascript - 如何防止点击和模糊事件之间的竞争?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43355514/

相关文章:

javascript - 缓慢地自动滚动到 div 的底部

javascript - 图片右侧不可点击

angular - 如何在 Angular2 中渲染带有组件的动态模板

javascript - Angular HttpClient post 无法发送简单的字符串参数

javascript - Bootstrap -btn 组,数据切换 ="buttons": how to select a button with JS and deselect all others?

javascript - contenteditable div 中的内容为空

javascript - 如何通过 REST API 使用feathers.js 读取文件?

javascript - polymer 中可调整大小的元素

javascript - 设置 HTML5 页面使其适合所有设备而无需滚动

angular - 将 TypeScript/Angular 中的依赖项注入(inject)原型(prototype)