JavaScript:添加最新的表单事件

时间:2019-01-18 08:59:21

标签: javascript forms listener dom-events

我正在编写一个插件,并且喜欢向一个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);

0 个答案:

没有答案