The "submit" event doesn't bubble up in Internet Explorer after it
originates in a form. That makes it impossible to catch with event
delegation:

document.on("submit", function(e) { ... })

Kangax wrote about a way we can detect even support without browser
sniffing:
http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
We have good custom events support, so we should be able to emulate submit
event bubbling in IE. There are a couple of approaches:

*1) Stick a real "submit" handler directly on each form and make it fire a
custom "submit" event on the form's parent:*

$$('form').invoke('observe', 'submit', ...)

Pros: easy.
Cons: doesn't work with dynamically created (or inserted) forms, making this
solution too brittle.

*2) Forms can be submitted in two ways: clicking/tapping one of the submit
buttons, or pressing Enter. Both of these events bubble, so we can detect
where the submit originated from and fire a custom event from there.*

Pros: works with dynamically created forms.
Cons: potentially complex solution. Unnecessary observing of all clicks and
keypresses on the page?

*3) Observe when a form element gains focus with "focusin" event, then stick
a real submit handler to it which in turn fires the custom event.*

Pros: less complex than click/keypress.
Cons: not sure if it's possible to submit a form without triggering a
"focusin" event first, but if it is then this solution is brittle.


I'll do more testing later. But right now, what are your opinions? Do you
have any other ideas how we could hook into forms on the page and trigger
custom "submit" events?

-- 
You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to prototype-core@googlegroups.com
To unsubscribe from this group, send email to 
prototype-core-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-core?hl=en

Reply via email to