effettivamente disabled serve a nn fargli accettare eventi, x fare quello che vuoi tu devi usare readonly

e comunque onchange scatta quando il fuoco passa da quell'oggetto a un altro, quindi nn scatta se gli cambi il contenuto da js e nn intervieni sul fuoco