Thanks for that Adam, helped me a lot.
On Saturday, January 10, 2009 1:10:15 AM UTC+10, Adam Massive wrote:
>
> Ok ok, stop.. just stop... you're all making it too complicated.
> [shakes head]
>
>
> Let's go over things...
> You want a button that submits normally but want to try and stop the
> enter key submitting it. To do this, you're going to need to understand
> the relationship between the ENTER key, the Mousebutton and Javascript.
>
> When you press ENTER in a form, the form automatically goes to the first
> Submit button it can find (or usually the closest in accordance to
> tabindexing) and then submits the form. It treats the ENTER key like it
> was the left mouse button because it has to assume that some people
> don't have a mouse (partially sighted, screen readers etc).
>
> In Javascript, when you press ENTER in a form, it also relates this to
> the left mouse button being clicked, which therefor activates the
> "onclick" event. It also sets a keycode (13) so it knows what key on the
> keyboard was pressed.
>
> However, Javascript has another event called "onmousedown" which only
> works if the mouse button is pressed down. It doesn't get related to the
> keyboard or the ENTER key. I believe onkeydown is for that.
>
> Now!, the onmousedown event is activated before the onclick method which
> means we have a way of setting a rule before doing anything with
> onclick. (Onclick doesn't activate until you let go of the clicked
> button).
>
> So, the easiest solution (if we don't do anything fancy with functions)
> is to apply two javascript events to your submit button.
>
> Example
> ==============
> <input type="submit" name="mybutton" onmousedown="this.title=1"
> onclick="if(this.title!=1){return false;}" value="Submit my Form" />
>
>
> How it works?
> ==============
> What happens is.. if you click the button, the onmousedown event runs
> first which renames/sets the title of the button. When you let go of the
> mousebutton, the onclick takes effect and checks the title to see if its
> set to 1. If it is, then it submits, otherwise it returns false.
>
> This means that, if you pressed ENTER, onmousedown wouldn't have renamed
> the title which means the onclick will return false and not submit the
> form.
>
> Obviously, as I know the Mootools library I've made a transparent method
> which just adds the two events to all input=submit buttons on the page.
> The inline example here is just to show you the method for copying and
> pasting quickly :)
>
> Hope that helps someone!
> Adam
> www.greatbigmassive.net
>
> --
> Posted via http://www.ruby-forum.com/.
>
>
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/9700e089-59f5-4e7a-b870-8ed0ca05e4a8%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.