One odd thing is that there are inconsistencies between a simple <SELECT> and <SELECT multiple='multiple'>, and between browsers. All tests are on XP, jQuery 1.2.6.
On the tests below, the simple <SELECT> can of course have two display states, toggled by the user: I'm using "expanded" to mean it's expanded from the drop-down (several options visible, scrollbar displayed), and "unexpanded" to mean it's displayed as a single line. The keyboard up/down keys are being used to change the SELECT value.
The Change event does gets fired in the following circumstances:
- <SELECT multiple='multiple'> on Firefox 3, IE7, (Opera 9.5***)
- <SELECT> unexpanded on Opera 9.5, IE7
but the Change event does not get fired on:
- <SELECT> unexpanded on Firefox 3
- <SELECT> expanded on Firefox 3, Opera 9.5, IE7
*** NB Opera 9.5 behaves differently to the other browsers for <SELECT multiple='multiple'>, in that pressing up and down does not change the actual item selected (space must be pressed for that to occur), so no direct comparison is possible. FWIW, space triggers the change event, up/down does not; which is what I would expect.
My intuition led me to expect that change would get fired on all of those circumstances (because the visual feedback from the browser is that the selected option has changed). The one exception is in Opera 9.5 with <SELECT multiple='multiple'>; when up/down are pressed, but space is not, then the visual feedback from the browser is that the selection '''hasn't''' changed, and so I wouldn't expect the change event to fire.