Событие change не срабатывает при изменении значения с помощью js
При загрузке страницы я устанавливаю значения инпута из куков:
$( document ).ready(function() {
$("#user-id").val(getCookie("user_id"));
});
Но при таком раскладе событие change попросту не срабатывает:
$("#user-id").change(function() {
console.log("Triggered");
}
Как можно это пофиксить? Используется jquery 3.3.1 версии.
Ответы (2 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Событие работает на самом деле. Но, возможно, вам нужно событие input ?
$( document ).ready(function() {
$("#user-id").val(1111);
});
$("#user-id").on('input', function() {
console.log("Triggered");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<input type="text" id="user-id" value="" />
Если я что-то вообще правильно понял :D
Автор решения: OPTIMUS PRIME
→ Ссылка
В jQuery есть метод .trigger(), запускающий события:
$(document).ready(function() {
$("#user-id").val(111).trigger("change");
});
$("#user-id").change(function() {
console.log("Triggered");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="user-id">
Без trigger, можно просто вызвать функцию и там, и там:
$(document).ready(function() {
$("#user-id").val(111);
myFunction();
});
$("#user-id").change(myFunction);
function myFunction() {
console.log("Triggered");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="user-id">