<input type="text" onchange="alert('change!')" oninput="alert('input!')" />
| Opera 9 | Opera 9.5 Β | Safari 3 | Firefox 2 | IE 7 | |
|---|---|---|---|---|---|
| Entering symbol | input input change |
input input change |
input | change input |
- |
| Deleting symbol(s) | input input change |
input input change |
input | change input |
- |
| Pasting symbol(s) | - | input input change |
input | change input |
- |
| Cutting symbol(s) | - | - | input | change input |
- |
| Moving symbol(s) | input input change |
input input change |
n/a (?) | change input |
- |
| Duplicating symbol(s) | n/a | n/a | input | change input |
- |
| Undo | - | input | input | change input |
|
| Quit (leave) changed field | - * | - * | change | - | change |
| Submit changed field | - * | - * | change | - | - |
* In Opera input and changed events are fired if events have not fired when you were in field (for example, in case of pasting or cutting in Opera 9).
IMHO at this moment Safari has most logical implementation of change and input events firing.