Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Событие Input и программное изменение value (https://javascript.ru/forum/events/70600-sobytie-input-i-programmnoe-izmenenie-value.html)

fedushok 18.09.2017 20:24

Событие Input и программное изменение value
 
Приветствую!
Подскажите, пожалуйста, событие oninput (у <input>) возникает только при ручном вводе (с клавиатуры, copy->paste) или может возникнуть при задании value программно? У меня в FireFox не получается вызвать это событие программным изменением value. Как должно быть и есть ли разница в реализации события oninput в разных браузерах в рамках первого вопроса?
Заранее благодарю за ответ.

Rasy 18.09.2017 20:50

Цитата:

Сообщение от fedushok
У меня в FireFox не получается вызвать это событие программным изменением value. Как должно быть и есть ли разница в реализации события oninput в разных браузерах в рамках первого вопроса?

Можно искусственно вызвать событие input через конструктор Event. Изменение атрибута не вызывает событие у дом элемента.

fedushok 18.09.2017 20:58

Благодарю. В общем так. Изменение атрибута не должно вызывать событие вне зависимости от браузера.

j0hnik 18.09.2017 21:34

Но вы если вам нужно смело можете прикрутить вызов функции после изменения value. и не заморачиваться с событием.
вот пример:

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
	<input type="text">
	<script>

		var inp = document.querySelector('input')
		inp.oninput=func;

		function func(){
			alert(inp.value);
		}

		setTimeout(function(){
			inp.value=555;
			func();
		},5000);

	</script>
</body>
</html>


есть фунция которая выводит алертом value инпута.
а ниже мы "программно" меняем value и запускаем функцию.

fedushok 19.09.2017 18:31

Согласен. Вызов события в таком случае будет несколько сложнее, чем просто использование функции предназначенной для обработки события.


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