El punto es que, si realizas el cambio desde el código, se omite la interacción con el DOM, por lo que evidentemente esos eventos no se ejecutarán. Por eso es que te sugiero que, en el bloque de código en el que realizas la asignación de del dato, ejecutes las acciones que deseas. Si no quieres repetir líneas de código, puedes tener todo en una función a la cual solo tendrías que llamar.
Un ejemplo:
Código Javascript
:
Ver original//La función a ejecutarse
function ejemplo(){
alert("Ocurrió un cambio");
}
//Si se producen estos eventos en los elementos del DOM, se ejecutará la función "ejemplo"
$("#foo").on("change", ejemplo);
$("#bar").on("keydown change", ejemplo);
//Si hago el cambio de valor desde el código, también se ejecutará la función "ejemplo"
$("#foo").val("abc");
ejemplo();
$("#bar").val("def");
ejemplo();