# How detect image button clicks?

**URL:** <https://www.ruby-forum.com/t/how-detect-image-button-clicks/135392>\
**Category:** Rails\
**Created:** [April 21, 2008, 8:31pm UTC](https://www.ruby-forum.com/t/how-detect-image-button-clicks/135392 "2008-04-21T20:31:08Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![S-gw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ed655f/32.png) [@S-gw](https://www.ruby-forum.com/u/S-gw)\
**Post date:** [April 21, 2008, 8:31pm UTC](https://www.ruby-forum.com/t/how-detect-image-button-clicks/135392/1 "2008-04-21T20:31:08Z")

</div>

I have a form submitted using remote\_form\_tag. I have two image  
buttons in this form.

In other languages, I have been able to detect which button was  
clicked by checking for a GET or POST parameter of the button name  
with a .x after it (such as buttonName.x = 13)

In the params I am getting from my form in Rails, I get hash entries  
for all button names with no .x or .y extensions and no other  
indicator as to which button was clicked.

The output of essentially doing debug(params) simply shows  
btnSearch: “”  
btnClear: “”

What is Rails’ solution to this? It seems to be eliminating rather  
useful (and commonly used) info.

– gw

---

<div class="post-metadata">

**Author:** ![S-gw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ed655f/32.png) [@S-gw](https://www.ruby-forum.com/u/S-gw)\
**Post date:** [April 21, 2008, 8:41pm UTC](https://www.ruby-forum.com/t/how-detect-image-button-clicks/135392/2 "2008-04-21T20:41:49Z")

</div>

On 21 Apr 2008, at 19:29, Greg W. wrote:

> indicator as to which button was clicked.
> 
> The output of essentially doing debug(params) simply shows  
> btnSearch: “”  
> btnClear: “”

I was surprised by this so I gave it a go. It worked as you would  
expect with a regular form, but not with the form\_remote\_tag. The big  
difference is of course that in the second case the form is serialized  
by prototype rather than the browser, and prototype obviously doesn’t  
know how to get the click location. Whether this is an omission or a  
genuinely hard thing to do I don’t know.

> 

Fred

---

<div class="post-metadata">

**Author:** ![S-gw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ed655f/32.png) [@S-gw](https://www.ruby-forum.com/u/S-gw)\
**Post date:** [April 21, 2008, 9:24pm UTC](https://www.ruby-forum.com/t/how-detect-image-button-clicks/135392/3 "2008-04-21T21:24:23Z")

</div>

On Apr 21, 2008, at 11:40 AM, Frederick C. wrote:

> > btnSearch: “”  
> > btnClear: “”
> 
> I was surprised by this so I gave it a go. It worked as you would  
> expect with a regular form, but not with the form\_remote\_tag. The big  
> difference is of course that in the second case the form is serialized  
> by prototype rather than the browser, and prototype obviously doesn’t  
> know how to get the click location. Whether this is an omission or a  
> genuinely hard thing to do I don’t know.

OK, well, at least I know it’s not me. And maybe it explains another  
problem I am having with the same form which I don’t seem to have  
with a non-Ajax form.

Hrmmm. So much for Ajaxifying this app (UI depends heavily on  
differentiating image buttons).

Thanks for the verification.

– gw

---

<div class="post-metadata">

**Author:** ![S-gw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ed655f/32.png) [@S-gw](https://www.ruby-forum.com/u/S-gw)\
**Post date:** [April 21, 2008, 9:46pm UTC](https://www.ruby-forum.com/t/how-detect-image-button-clicks/135392/4 "2008-04-21T21:46:42Z")

</div>

On 21 Apr 2008, at 20:23, Greg W. wrote:

> > > 
> > 
> > genuinely hard thing to do I don’t know.

I hacked together a quick experiment: add an onclick to the form that  
does

\<% form\_tag({},{:onclick =\> ‘clicker(this, event); return false’}) do %\>  
…

Seems to be a start. (of course you’d have to add stuff to check that  
the click was on an image element and should trigger a submit etc…

Fred
