あまり使用頻度は低いが、気になって試したのでメモ。
JQueryのval(値)呼び出し時はイベントは発生するか?
JQueryでセレクタで取得した要素に対して値を設定する場合、val(設定する値)を使うと思う。
この時、値が変わるわけなのでonchengeイベントが発生するように思うが、実際は何のイベントも発生しない。
val(値)でイベント発生するには
もしonchengeイベントの発生を期待している場合は、明示的にイベントを発生させてあげる必要がある。
val(値)でonchengeイベント発生させる
$("#hoge").val("hogehoge").change(); //値を設定後、onchengeイベント発火!
(調べていないので恐らくだが、入力項目の入力欄にフォーカスインして値を変更、入力欄からフォーカスアウトした際にフォーカスイン時から値が変わっている場合にonchangeイベントが発火されているのではないか。このため、フォーカス遷移の伴わないval(値)ではonchangeイベントが発火しない。)