FYI if you do the 'onChange' and have your site set to XHTML strict it won't work. Change it to 'onchange' and you'll be fine. I see a lot of people get caught by that one.

Jamie Holly
http://www.intoxination.net http://www.hollyit.net



Greg Holsclaw wrote:
A quick way to do this is to use the attributes as you mentioned. Any HTML
attribute can be added into the attributes array as follows:


  $form['cc'] = array (
    ...
    '#attributes' => array(
        'onChange' => "some_js_funtion();"
        ),
        ...

You can include Jquery directly there instead of the function if you simply
need to hide a div, or you can use:

drupal_add_js(path_to_file);

Of course, from a JavaScript purists mindset, you should attach all the
event handlings later, but that is a completely different topic.

If you have a callback to get more information from a menu callback, then
AHAH or CTOOLs is definitely the way to go, but for simpler affects this way
might be sufficient.

Greg

-----Original Message-----
From: [email protected] [mailto:[email protected]]
On Behalf Of Jeff Greenberg
Sent: Sunday, November 22, 2009 10:38 AM
To: [email protected]
Subject: [development] Drupal way of doing onchange

Haven't delved into AHAH yet, this might force the issue.


Using an easy (=less typing) example. A credit card form. When the credit card type is selected from a select, the selection needs to fire a javascript function that will disable fields that don't apply to that card type (such as CVV).


Normally, I would have an onchange event for the select, and noticed that in the form api, while there is an attribute section to add miscellaneous attributes, the doc doesn't mention events as examples. And if putting an event there is legitimate, there isn't a mention of how to include the responding js function in the form.


If AHAH is the way I'm supposed to handle this, I'd appreciate being pointed to a good similar example, because I'm a bit unclear from the AHAH entries in the form reference docs, for example, how to relate the myhandler/js entry to a physical location of the function, and how the function gets there.


Thanks!



Reply via email to