I made the following analysis of how the ice:selectOneMenu element behaves in different browsers when partialSubmit=true in order to make a more thorough modification to make the component behave more uniformly across browsers ('yes' means that a request is sent to the server when performing that action).
Action |
FF |
IE9 |
Chrome |
clicking on option with mouse |
yes |
yes |
yes |
focused, with list closed, and using arrow keys to highlight different options |
no |
yes |
yes |
focused, with list open, and using arrow keys to highlight different options |
no |
no |
no |
focused and pressing enter |
yes |
yes |
yes |
opening list, hovering over option to highlight it, then closing list |
no |
no |
no |
focused, pressing letter/number that doesn't select a new value |
no |
no |
no |
focused, pressing letter/number that does select a new value |
no |
yes |
yes |
In short, the only difference is that FF lets you select any option(s) you want and waits until you leave the field to fire the onchange event.
So, a new attribute, tentatively called 'partialSubmitOnBlur', would be added to ice:selectManyListbox, ice:selectManyMenu, ice:selectOneListbox, and ice:selectOneMenu. This attribute would control the behaviour of the <select> element, rendered by these components, and make it work in the same way across browsers.
This is also applicable to <icecore:singleSubmit submitOnBlur="true"/> case. As it fire itself on change in Chrome and IE despite its submitOnBlur parameter value.