onchange发生在元素失去焦点后,而不是想象中的元素的值发生改变的时候。其实它的作用就跟onblur(失去焦点事件)差不多,只不过onchange是失去焦点且值发生了改变。
要想实现目的,可以改用onpropertychange和oninput,不过有意思的是,前者只有IE支持,而后者则除了IE外的其他浏览器都支持,所以要把两者都加上:
<input type="text" name="number" id="number" onpropertychange="compute()" oninput="compute()" />