3

我有以下代码:

function showAddrBox() {
    var prompt = document.getElementById('addr_prompt');
    prompt.style.display = 'block';
    document.generic_form.address.style.display = 'block';
    document.generic_form.onsubmit = validateAddrForm;
}

function hideAddrBox() {
    var prompt = document.getElementById('addr_prompt');
    prompt.style.display = 'none';
    document.generic_form.address.style.display = 'none';
    document.generic_form.onsubmit = null;
}

问题是有时我有附加的附加功能onSubmit,我想保留这些功能。我希望能够在onSubmit事件中添加和删除单个函数,而不仅仅是使用onsubmit =. 换句话说,我需要一种方法来完成这样的事情:

document.form.onsubmit += function;
document.form.onsubmit -= function;

有任何想法吗?

4

4 回答 4

7

Quirksmode 有一篇关于高级事件注册的精彩文章

addEventListener简短形式是:您可以使用(attachEvent在旧版本的 IE 中)绑定多个事件。

if (someform.addEventListener) {
  someform.addEventListener('submit', somefunc, false);
} else {
  someform.attachEvent('onsubmit', somefunc);
}

要删除它们,您可以分别使用removeEventListenerdetachEvent


很快你就会因为重复输入addEventListenerand 而烦恼attachEvent,你可能会考虑编写一些通用代码来为你绑定事件。幸运的是,其他程序员也有同样的想法,并且有许多库可以优雅地处理事件管理。jQuery往往是首选库,因为绑定事件很简单:

$('#formid').submit(somefunc);

通用事件绑定方法是:

$('#formid').on('submit', somefunc);

要解除绑定,您可以使用:

$('#formid').off('submit', somefunc);

尽管所有这些都在jQuery API中有详细记录。

于 2012-01-24T04:58:55.977 回答
6

使用element.addEventListener("eventName", callbackFunction, false)element.removeEventListener("eventName", callbackFunction)

其中 eventName 是不带“on”的处理程序的名称。所以 onsubmit 变成了提交。

有关这两个函数的文档,请参阅:

于 2012-01-24T04:55:25.840 回答
0

我要做的是在表单上有一个 onSubmit 函数来协调其余函数,执行关于何时做什么的逻辑。在该函数执行结束时,如果您想继续提交,您可以返回 true,否则返回 false。

于 2012-01-24T04:53:35.747 回答
0

您可以为下面的表格提及两个或更多功能。

<form name="formaname" onsubmit="function1(),function2()">

更多关于 onsubmit

于 2012-01-24T04:59:58.693 回答