Details
Description
Problem: enter key on h:inputText w/ actionListener causes 2 submits, full form submit (via enter key pressed on h:inputText, from the bridge?), followed by action event submit form the h:inputText.
The issue is that we have assumed that any component that fired an action event on "enter" would also consume the "enter" key event so that it would not bubble up the DOM. This appears to be an incorrect assumption in this case.
- this behavior can cause problems with validators/users as the they are
under the perception that just one submit has occurred, the double submit
will likely leave the application in an unexpected state.
- Workaround in auction is to avoid having an action listener on the input field.
- Ideally the framework would not do the full form submit if the component already had an action listener ready to fire.
The issue is that we have assumed that any component that fired an action event on "enter" would also consume the "enter" key event so that it would not bubble up the DOM. This appears to be an incorrect assumption in this case.
- this behavior can cause problems with validators/users as the they are
under the perception that just one submit has occurred, the double submit
will likely leave the application in an unexpected state.
- Workaround in auction is to avoid having an action listener on the input field.
- Ideally the framework would not do the full form submit if the component already had an action listener ready to fire.
Issue Links
- duplicates
-
ICE-5536 The action method of two components are called when Enter key is pressed
- Closed
The test in ice.submit function which verifies if an event needs to have its default action canceled fails to return true when the enter key is pressed. More precisely isKeyEvent returns 'false' which is not correct since the event is triggered by a key press. The browser specific key events inherit from both KeyEvent and NetscapeEvent/IEEvent classes. isKeyEvent is not overridden because the object will pick the method of the first defined ancestor (NetscapeEvent/IEEvent ), but really the method expected to be picked is found on the KeyEvent ancestor.
To fix changes the order of inheritance for the events that use multiple inehritance to make sure the isKeyEvent or isMouseEvent are overrriden properly.