【问题标题】:Check if link is clicked in JavaScript检查是否在 JavaScript 中单击了链接
【发布时间】:2016-01-07 15:23:05
【问题描述】:

编辑:我的问题与“假定重复”不同,因为我的问题是检查单击链接时如何不触发事件,另一个问题是关于如何检测表单中的更改。

我正在使用一个函数 (taken from here) 来检测在离开页面之前对表单所做的任何更改,这工作正常,但是当我单击保存按钮时它也会触发,因为我正在使用 onbeforeunload 事件触发该功能,我想在单击保存按钮时防止这种情况发生。

这是我的活动:

window.onbeforeunload = function (e) {
    e = e || window.event;
    if (formIsDirty(document.forms[0])) {
        // For IE and Firefox
        if (e) {
            e.returnValue = "You have unsaved changes.";
            alert("You have unsaved changes.");
        }
        // For Safari
        return "You have unsaved changes.";
        alert("You have unsaved changes.");
    }
};

如何防止在单击此特定保存链接时触发此事件?

链接:

<a id="ctl00_ContentPlaceHolder1_lbtnSave" href='/save'>
<img id="ctl00_ContentPlaceHolder1_Image5" class="imgvalign" src="../../images/icons/save.gif"> Save
 </a>

【问题讨论】:

  • Detecting Unsaved Changes的可能重复
  • 您的问题的答案实际上在您的链接问题中。您需要跟踪表单的该状态并使用保存按钮上的单击处理程序来更新该状态。
  • 不,不是,那么请告诉我答案?

标签: javascript html


【解决方案1】:
event.target //DOM object.

event.target.id  //id of source element.

sourceElement = $(event.target.id); // will get you jQuery object

您可以检查元素是否是提交按钮。如果是则不需要显示消息

【讨论】:

  • 他可以检查元素的id,不需要Jquery
  • event.target.id 在我的情况下没有做任何事情,这是我使用过的:if (e.target.id === "ctl00_ContentPlaceHolder1_lbtnSave") { //save button was clicked return false; }
  • @user3574492 为什么需要触发事件。您可以使用该功能来检测保存单击功能的变化。有错请指正
  • @AnoopLL 我正在使用window.onbeforeunload 事件来检测用户是否试图离开当前页面。这就是为什么我使用事件来尝试获取目标id,目标id是保存按钮
猜你喜欢
  • 1970-01-01
  • 2015-01-15
  • 2013-10-14
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 2018-08-30
  • 1970-01-01
  • 2015-09-29
相关资源
最近更新 更多