add javascript

perl/CGI code :
    print p(checkbox("fries",0,"yes","Fries")) ;

html code:
    <input name="checkbox" type="checkbox" onMouseOver="showPic(1)" value="checkbox">

is there a way to add the onMouseOver to the perl code?? thank you!!
LVL 1
ocsurfAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

jmcgOwnerCommented:
You'll need to use the named parameter methods of CGI to get this to work properly:

print p(checkbox( -name=>"fries", -checked=>0, -value=>"yes",
           -label=>"Fries", -onMouseOver=>"showPic(1)"));

The attribute name will be lower-cased, but that does no harm to the functionality:

<p><input type="checkbox" name="fries" value="yes" onmouseover="showPic(1)" />Fries</p>
0
ocsurfAuthor Commented:
is it better or makes a difference it you preform the html functions This way
#Perl
    print start_form() ;
    # add both textfields to form
    print p("Name: ", textfield("name")) ;
    print p("E-mail address: ", textfield("site")) ;
    # add the dogs we initialized in dogs array
    print p(radio_group("dog", \@dogs,"Big dog",1)) ;

or------------
#printing html
print qq(<form name="form1" method="post" action="">
<table width="735" border="1" summary="main">
  <caption>
  main table
  </caption>
  <tr>
    <td width="159" height="247">
<input name="checkbox" type="checkbox" onMouseOver="showPic(1)" value="checkbox">
Plain Dog <p><input name="checkbox" type="checkbox" onMouseOver="showPic(3)" value="checkbox"> Cheese Dog </p></td>.......etc
0
ocsurfAuthor Commented:
Forget the last question i figured it out. But how would i do this

@dogs = ('Big dog','Cheese Dog','Plain dog') ;
print p(radio_group("dog", \@dogs,"Big dog",1)) ;

for big dog i would like the mouse over to call showpic(3)
for Cheese dog i would like the mouse over to call showpic(4)
for Plain dog i would like the mouse over to call showpic(5)

is there way, it tried to to do it like above but i think it is because it is an array and a radio group? right?
0
Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

ocsurfAuthor Commented:
add 100 points
0
jmcgOwnerCommented:
From CGI pod:


              print $query->radio_group(-name=>'group_name',
                                        -values=>['eenie','meenie','minie'],
                                        -default=>'meenie',
                                        -linebreak=>'true',
                      -labels=>\%labels,
                      -attributes=>\%attributes);

                   -or-

              print $query->radio_group('group_name',['eenie','meenie','minie'],
                       'meenie','true',\%labels,\%attributes);

==========

So, if you wish to continue to avoid the keyword-based parameters, you could do:

@dogs = ('Big dog','Cheese Dog','Plain dog') ;
@dogattr{ @dogs } = ( { onmouseover=>{ 'Big dog'=>"showpic(3)" },
               { onmouseover=>"showpic(4)" },
               { onmouseover=>"showpic(5)"} );

print p(radio_group("dog", \@dogs, 'big dog', 1, { }, \%dogattr));

It turns out we have to use the un-minused attribute names in the %dogattr array because of the way the set_attributes routine works internal to CGI.pm.

Anyway, the above code gives me:

<p>
<input type="radio" name="dog" value="Big dog" onmouseover="showpic(3)" />
Big dog<br />
<input type="radio" name="dog" value="Cheese Dog" onmouseover="showpic(4)" />
Cheese Dog<br />
<input type="radio" name="dog" value="Plain dog" onmouseover="showpic(5)" />
Plain dog<br />
</p>

except I inerted some newlines to add clarity and keep the lines from getting too long.
0
ocsurfAuthor Commented:
@dogattr{ @dogs } = ( { onmouseover=>{ 'Big dog'=>"showpic(3)" },
               { onmouseover=>"showpic(4)" },
               { onmouseover=>"showpic(5)"} );

this part the {} don't match up, there may be an extra on? I'm learning all this, why did you put a %             but at the top you put a @

   |                                                  |
   V                                                 V
 \%dogattr));                                  @dogattr

thank you for the help
0
jmcgOwnerCommented:
Aw, shucks. I posted one of the experimental expressions rather than the one that worked!


@dogs = ('Big dog','Cheese Dog','Plain dog') ;
@dogattr{ @dogs } = ( { onmouseover=>"showpic(3)" },
               { onmouseover=>"showpic(4)" },
               { onmouseover=>"showpic(5)"} );

print p(radio_group("dog", \@dogs, 'big dog', 1, { }, \%dogattr));

You see, I was having trouble getting this to work and it ultimately required going to the source code of the CGI.pm module to figure out what was going wrong.

The @dogadattr{ @dogs } expression is a _slice_ assignment. I'm assigning the list on the right (which contains a sequence of anonymous hash references) to the list on the left, which consists of the members of the %dogattr hash referred to (indexed) by the array @dogs.


0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Perl

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.