Событие 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">

→ Ссылка