Okay, Arran stepped me through it.
The issue occurs when the focus is originally on the text entry field that has been edited (and has an ace:ajax submit or partialSubmit enabled on it). When you then click on the submit button, the ace:ajax submit from the text input seems to interfering with the normal operation of the ace:submitMonitor. The way the test is written, the submitMonitor should not even be triggered by the text entry ajax submit, so it's a bit strange. If you click the submit button and hold it down for a second or so (presumably until the ace:ajax submit from the text entry completes), it works correctly and the submitButton event is fired on the server.
Seems like an impedance mismatch between the dom events we're using to trigger submitMonitor on the button, and the actual submit. The submit shouldn't occur until the mouse button on the button is released, and neither should the submitMonitor. Having an in-progress ajax submit off of the onblur on the textEntry should have NO impact, since the submitMonitor is configured with "for=submitButton" only.
To reproduce:
- enter some text in the textentry, leave focus on textEntry
- Click the submitButton normally (fast mouse button down and release).
- No event logged in the server log for the submitButton event == FAIL.
- enter some text in the textentry, leave focus on textEntry
- Click and HOLD the mouse button down over the submitButton for a second, then release.
- Submitbutton event logged in the server log == PASS.
You can also disable the ace:ajax submit on the textEntry and it will work everytime, so their is some unexpected interaction between the ace:submitMonitor on the submitButton, and the ace:ajax submit on the text entry.
Attached test case that shows this issue with the ICE and ACE components.
Steps: