Я пишу плагин и хочу добавить функцию к событию submit / onsubmit, которая должна срабатывать только в том случае, если все существующие события submit / 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);