<div class="gmail_quote">On Thu, Oct 29, 2009 at 9:20 AM, Michael A. Puls II <span dir="ltr"><<a href="mailto:shadow2531@gmail.com">shadow2531@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Safari and Firefox will allow focus() inside the handler to decide where the character gets inserted, but only with "keydown". With "keypress" (and textInput in webkit) in Firefox and Safari, it appears that the char was already inserted right after keydown, so a focus() change is already too late. Despite that though, preventDefault() still works in Firefox and Safari inside a "keypress" handler to prevent the char from being inserted. So, I'm not exactly sure what's they're doing behind the scenes.<br>
</blockquote><div><br>DOM Level 3 Events says "The default action of the keypress event depends upon the key and the context: if the key is associated with a character, and if there currently focused element in the document can receive text (such as a form input or an editable text block), the default action is to dispatch a textInput event with the character as the value of the TextEvent.data attribute"<br>
<br>The default action of a keypress is not to insert a character in the element that has focus, but to insert a character on the element that represents the context of the keypress. In the given example, the keypress's context is the first field, not the second. I agree though that the documentation could be clearer about this as it's not explicitly stated.<br>
</div></div>