Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Эмулировать событие change (https://javascript.ru/forum/misc/74023-ehmulirovat-sobytie-change.html)

pokk 06.06.2018 12:05

Эмулировать событие change
 
Добрый день, можно из JS эмулировтаь событие change ?
Есть 20+ checkbox, которые активируют/деактивируют, соответственный input, это сделал примерно так
Запихал все всю обработку их в один объект, и потом в цикле устанавливаю на отслеживание событий.
"id_AF_box_0": {
			Type:	'change',
			action: function(element, data, index){change_AF("id_AF_box_0","id_AF_0")}
	},
	//--------------------------------------------------------------------------	
	"id_AF_box_1": {
			Type:	'change',
			action: function(element, data, index){change_AF("id_AF_box_1","id_AF_1")}
	},


Но тут вышла не большая загвоздка, эти все checkbox принимаются по JSON, и после принятия его,и выставление checked, но естественно input не активируются по тому что события change не было.

1) Так что как указать, что после принятия json , событие change у нужных checkbox было ?

2) как сделать все таки правильно ? (вызывать 20+ функций change_AF("id_AF_box_0","id_AF_0") не очень охото )

j0hnik 06.06.2018 12:09

document.querySelector('.el').dispatchEvent(new Event("change"));

pokk 09.06.2018 11:23

В Exploere это не работает ?

Alexandroppolus 09.06.2018 11:27

Цитата:

Сообщение от pokk
В Exploere это не работает ?

зависит от версии

https://learn.javascript.ru/dispatch-events

pokk 09.06.2018 11:43

// старый стандарт
var event = document.createEvent("Event");
event.initEvent("change", true, true);

куда Id передавать ? :(

j0hnik 09.06.2018 11:48

// Create the event.
var event = document.createEvent('Event');

// Define that the event name is 'build'.
event.initEvent('build', true, true);

// Listen for the event.
elem.addEventListener('build', function (e) {
  // e.target matches elem
}, false);

// target can be any Element or other EventTarget.
elem.dispatchEvent(event);


Часовой пояс GMT +3, время: 16:06.