admin管理员组

文章数量:1336117

I have a select element that has its onchange event handled by a jQuery event listener, and its onchange attribute is empty.

Triggering the onchange event by this method

document.getElementById("element_name").onchange();

is not working.

I want a solution to simulate a real full onchange event on that element.

I have a select element that has its onchange event handled by a jQuery event listener, and its onchange attribute is empty.

Triggering the onchange event by this method

document.getElementById("element_name").onchange();

is not working.

I want a solution to simulate a real full onchange event on that element.

Share Improve this question edited Dec 15, 2020 at 21:53 Brian Tompsett - 汤莱恩 5,89372 gold badges61 silver badges133 bronze badges asked Jun 17, 2012 at 6:31 Michael harrisMichael harris 9962 gold badges15 silver badges25 bronze badges 1
  • 1 -1 You have two answers that have jsFiddle proofs. I should have known better than to answer a 30% user. :( – iambriansreed Commented Jun 17, 2012 at 7:09
Add a ment  | 

2 Answers 2

Reset to default 4

Try:

var element = document.getElementById("element_name");

if ('fireEvent' in element)
    element.fireEvent("onchange");
else {
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent("change", false, true);
    element.dispatchEvent(evt);
}

Proof:

http://jsfiddle/iambriansreed/xG7HB/

How about...

$('#element_id').trigger('change');

... or just...

$('#element_id').change();

? Added jsfiddle illustrating this.

Or do you need a jQuery-less solution?

本文标签: javascriptHow to simulate real onchange for an elementStack Overflow