【问题标题】:How to get the active element of a HTML page in Javascript如何在 Javascript 中获取 HTML 页面的活动元素
【发布时间】:2015-05-05 16:35:06
【问题描述】:

我有一个 HTML 页面,它只有一个输入文本框和一个按钮。 我已经为输入文本框放置了 onblur 事件处理程序,我在其中调用了一个仅进行验证然后显示错误的 ajax 调用。 同样,我在按钮上放置了 onclick 事件,我再次调用不同的 Ajax 调用,该调用也进行验证,如果验证通过,那么它也会进行一些数据库更新,然后重定向到其他 URL。

我的要求是,如果用户将焦点放在输入框上,然后他只需单击按钮(不会失去焦点),那么只有按钮 ajax 调用应该触发。但是,我看到两个 ajax 调用,一个用于 onblur,一个用于 onclick。

我尝试在 onblur 中使用 event.relatedtarget 来查看它是否在单击按钮时生成。但它仅适用于 chrome。我也检查了 document.activeelement 。这也行不通。

请告诉我们如何在所有浏览器中处理此问题。

谢谢, 苏拉布

【问题讨论】:

  • 保持简单 - 删除按钮,或删除模糊处理程序。 IMO 后者更好,因为用户希望单击按钮来启动操作。
  • 也许这个解决方案可以帮助你:stackoverflow.com/a/9151413/3749756

标签: javascript jquery html ajax


【解决方案1】:

你可以像这样设置一个全局标志

var submitting = false;
$('#button').click(function(){
    if (!submitting) {
        submitting = true;
        $.ajax({
           url: 'whateverurl.php',
           success: function(data) {
               submitting = false;
           }
        });
    }
});

这是 sudo 代码,因为我不知道你的来源,你会为你的 onblur 做同样的事情

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2010-12-18
    相关资源
    最近更新 更多