我正在编写一个插件,并且喜欢向一个commit / onsubmit事件添加一个函数,只有在所有现有的commit / onsubmit事件都返回true时才应该触发。 确保可以最后加载我的javascript文件,但是我不知道是否已经有一个关于Submit事件的侦听器(例如,来自另一个插件)。
假设我有这种形式:
<form action="" method="POST" onsubmit="return validateForm()" id="dummyform">
Mandatory field:<br>
<input type="text" name="required" id="required" value="">
<br><br>
<input type="submit" value="Submit" class="placeOrder">
</form>
on Submit-Event会验证表单,并且可能还有其他一些事件正在监听Submit事件。验证表单如下所示:
function validateForm() {
var x = document.getElementById('required').value;
if (x == "") {
alert("required fields must be filled out");
return false;
}
return true;
}
是否有一种方法可以确保所有现有的侦听器都被执行,并且只有当所有返回的侦听器都返回true
时,才执行我的功能?
我尝试过这样的事情:
var classname = document.getElementsByClassName("hook");
Array.from(classname).forEach(function(element) {
let form = findParentForm();
bindEvent(form, 'submit', function(e){
e.preventDefault();
if(form.onsubmit() === false)
return false;
modal.style.display = "block";
return false;
});
});
BindEvent只是支持IE8的功能。它会执行element.addEventListener(eventName, eventHandler, false);
或element.attachEvent('on' + eventName, eventHandler);