How to trigger event in JavaScript?

前端 未结 18 2255
情深已故
情深已故 2020-11-21 04:48

I have attached an event to a text box using addEventListener. It works fine. My problem arose when I wanted to trigger the event programmatically from another

18条回答
  •  孤城傲影
    2020-11-21 05:16

    You can use below code to fire event using Element method:

    if (!Element.prototype.triggerEvent) {
        Element.prototype.triggerEvent = function (eventName) {
            var event;
    
            if (document.createEvent) {
                event = document.createEvent("HTMLEvents");
                event.initEvent(eventName, true, true);
            } else {
                event = document.createEventObject();
                event.eventType = eventName;
            }
    
            event.eventName = eventName;
    
            if (document.createEvent) {
                this.dispatchEvent(event);
            } else {
                this.fireEvent("on" + event.eventType, event);
            }
        };
    }
    

    if (!Element.prototype.triggerEvent) {
        Element.prototype.triggerEvent = function (eventName) {
            var event;
    
            if (document.createEvent) {
                event = document.createEvent("HTMLEvents");
                event.initEvent(eventName, true, true);
            } else {
                event = document.createEventObject();
                event.eventType = eventName;
            }
    
            event.eventName = eventName;
    
            if (document.createEvent) {
                this.dispatchEvent(event);
            } else {
                this.fireEvent("on" + event.eventType, event);
            }
        };
    }
    
    var input = document.getElementById("my_input");
    var button = document.getElementById("my_button");
    
    input.addEventListener('change', function (e) {
        alert('change event fired');
    });
    button.addEventListener('click', function (e) {
        input.value = "Bye World";
        input.triggerEvent("change");
    });
    
    

提交回复
热议问题