in reply to CGI.pm radio box with multiple JavaScript onClick events

You have two problems - the first is a typo or a syntax error:
-onClick=>'alert("work");)
surely should be:
-onClick=>'alert("work")');
The second problem is one that bites newcomers to Perl often. When you pass arguments to a subroutine, those arguments are part of a list. If you pass another list, then it 'folds' into the whole list. This is what is happening when you give your -labels values - it is a list and the next argument, -onClick, is parsed as belonging to -labels. The quick solution is to specify -labels last. But, since -labels is suppose to be a hash reference (thanks for the heads up cLive ;-)), all you need to do is use curly braces instead of parens:
print $q->radio_group( -name => 'type', -values => [qw(old new)], -default => 'old', -onClick => 'alert("Work")', -labels => {old=> 'Current Device Type', new=>'Add Device Type'}, );
A better solution is to use a hash reference instead:
my %hash = ( old => 'Current Device Type', new => 'Add Device Type', ); print radio_group( -labels => \%hash, -name => 'type', -values => [values %hash], -default => 'old', -onClick => 'alert("Work")', );

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)

Replies are listed 'Best First'.
Re: (jeffa) Re: CGI.pm radio box with multiple JavaScript onClick events
by Anonymous Monk on Jun 24, 2003 at 19:43 UTC
    Thanks for the replay, but thats not exactly what I was looking for...maybe I didnt explain myself well. I'd like for each option in the radion button to have a different javascript function. In other words I want to send a variable either new or old to a javascript function depending on which button is selected. So I was thinking something like..
    $q->radio_group(-name=>"type", -values=>["old", "new"], -default=> "old", -onClick=>{old=>old_or_new(old), new=>old_or_new(new)} +, -labels=>{old=>"Current Device Type", new=>"Add Device T +ype"})
    but ofcourse my syntax is wrong. thanks again
      My mistake, i now see that you did use a hash reference ... *squints eyes*

      Your syntax is not too off, what you need to do is use the -attributes arg available in CGI.pm 2.93

      6.  The optional sixth parameter (-attributes) is pro-
          vided to assign any of the common HTML attributes
          to an individual menu item. It's a pointer to an
          associative array relating menu values to another
          associative array with the attribute's name as the
          key and the attribute's value as the value.
      
      Now, getting this syntax correct is a bit of a pickle. You have to use single quotes inside the alert - if you use double quotes, they will confict because double quotes are used to surround the onClick code:
      print radio_group( -name => 'type', -values => [qw(old new)], -default => 'old', -labels => {old=>'Current Device Type', new=>'Add Device Type'}, -attributes => { old => {onClick=>"alert('Current');"}, new => {onClick=>"alert('Add');"}, } );

      And my apologies for missing the real question the first time.

      jeffa

      L-LL-L--L-LL-L--L-LL-L--
      -R--R-RR-R--R-RR-R--R-RR
      B--B--B--B--B--B--B--B--
      H---H---H---H---H---H---
      (the triplet paradiddle with high-hat)