Evento de entrada não funciona se o valor for alterado com jQuery val () ou JavaScript

Se eu alterar o valor de um campo de entrada programaticamente, oinput echange eventos não estão disparando. Por exemplo, eu tenho este cenário:

var $input = $('#myinput');

$input.on('input', function() {
  // Do this when value changes
  alert($input.val());
});

$('#change').click(function() {
  // Change the value
  $input.val($input.val() + 'x');
});
<input id="myinput" type="text" />
<button id="change">Change value</button>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

O problema: O evento é acionado quando digito no campo de texto, mas não quando pressiono o botão. Existe uma maneira de conseguir isso com algum tipo de evento ou de outra forma sem ter que fazer isso manualmente?

O que eu não quero fazer: Eu poderia passar por todo o meu código para adicionar umtrigger ou chamada de função em qualquer lugar manualmente, mas não é isso que estou procurando.

Por quê: A principal razão pela qual eu gostaria de fazer isso automaticamente é que tenho muitos campos de entrada e muitos lugares diferentes onde altero essas entradas programaticamente. Isso me pouparia muito tempo se houvesse uma maneira de disparar o eventoautomaticamente quando qualquer entrada é alterada em qualquer lugar do meu código.

questionAnswers(5)

yourAnswerToTheQuestion