Onsubmit事件不为null,JavaScript对象表示它为空?

时间:2016-06-20 19:59:54

标签: javascript

一张图片胜过1000字:
enter image description here

从上图中可以看出,表单中有一个onsubmit事件。但是当我试图引用onsubmit时,即使它告诉我它是空的。

我提出这个问题的原因是因为我试图清除onsubmit事件:

doc.getElementById("frmMaster").onsubmit = null;   

哪个不起作用。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

我昨天能够解决这个问题。在使用chrome开发人员工具浏览对象层次结构后,我注意到该对象有一个" onsubmit"属性,但" onsubmit"属性已经为空。所以:

doc.getElementById("frmMaster").removeAttribute("onsubmit");

成功删除了该活动。我承认我并不完全掌握作为财产或属性的事件之间的区别,但至少它解决了这个问题。

答案 1 :(得分:0)

我相信要取消注册您必须使用的事件removeEventListener('event', boundFunction)。您拥有的代码产生的问题是WebForm_OnSubmit可能无法在您可以访问的位置定义。您需要做的是将该函数放入可以从控制台访问的上下文中(或者您最终想要调用此代码的位置)。所以你基本上可以这样做:

/* 
    somewhere in your server code, or wherever this WebForm_OnSubmit is defined
    var handleToWebForm_OnSubmit = WebForm_OnSubmit; //must be global scope
    // you will need to get a reference in javascript to this function 
    // and bind it so that you can willingly unbind it
*/
doc.getElementById("frmMaster").removeEventListener('submit', handleToWebForm_OnSubmit)