我有以下代码:
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;
有什么想法吗?
答案 0 :(得分:6)
使用element.addEventListener("eventName", callbackFunction, false)
和element.removeEventListener("eventName", callbackFunction)
。
其中eventName是没有'on'的处理程序的名称。所以onsubmit变成提交。
有关这两个功能的文档,请参阅:
答案 1 :(得分:6)
Quirksmode有wonderful article about advanced event registration。
简短形式是:您可以使用addEventListener
(旧版IE中的attachEvent
)绑定多个事件。
if (someform.addEventListener) {
someform.addEventListener('submit', somefunc, false);
} else {
someform.attachEvent('onsubmit', somefunc);
}
要删除它们,您可以分别使用removeEventListener
和detachEvent
。
很快就会因重复输入addEventListener
和attachEvent
而烦恼,您可能会考虑制作一些通用代码来为您绑定事件。幸运的是,其他程序员也有同样的想法,并且有许多库可以优雅地处理事件管理。 jQuery
往往是首选的库,因为绑定事件非常简单:
$('#formid').submit(somefunc);
通用事件绑定方法是:
$('#formid').on('submit', somefunc);
取消绑定你可以使用:
$('#formid').off('submit', somefunc);
尽管jQuery API中已详细记录了所有这些内容。
答案 2 :(得分:0)
我要做的是在表单上有一个onSubmit函数,它编排其余的函数,执行逻辑操作时的操作。在该函数执行结束时,如果要继续提交,则返回true;否则返回false。
答案 3 :(得分:0)