检测onsubmit是否被另一个事件处理程序取消了?

时间:2010-01-08 22:22:22

标签: javascript

我想要一种在任何onsubmit处理程序取消表单onsubmit时检测/触发函数的方法。这样做最可靠的方法是什么?

3 个答案:

答案 0 :(得分:1)

总结一下......

// This code should execute last (after onsubmit was already assigned)
var oldsub = document.forms[0].onsubmit;
document.forms[0].onsubmit = function() {
  if(!oldsub)
    alert("Onsubmit did not exist!");
  else if(oldsub())
    alert("Onsubmit passed!");
  else
    alert("Onsubmit failed!");
}

答案 1 :(得分:1)

您可以使用自己的代码覆盖所有表单“onsubmit”处理程序:

var f = document.getElementById('myForm'); // or whatever
if (f.onsubmit) {
    var oldSubmit = f.onsubmit;
    f.onsubmit = function () {
        var result = oldSubmit.call(this);
        if (result === false) {
            alert("Cancelled.");
        }
        return result;
    };
}

答案 2 :(得分:0)

我可能错了,但是会在一个处理程序上返回false取消堆栈吗?如果做不到这一点,您可以在每个事件上附加一个检查调用,以检查堆栈中的另一个是否被取消。