I am trying to use CGI.pm to build a button for a form that has an onClick method defined that's supposed to make the page reload itself. Here's the code I'm using (assume strictures and warnings, and that $q = new CGI;):
Current working code: --------------------- sub tt_write_form () { # Write the omnipresent parts of the form print $q->start_form( # <-- print statement one -method => 'POST', -name => 'my_form' ); # Write the reload button $q->{'escape'} = 0; ### Tell CGI.pm not to escape the HTML so we can preserve the quotes first print $q->button( # <-- print statement two -name => 'reload', -value => 'Reload?', -onclick => "location.href=\'$self\'" ); $q->{'escape'} = 1; ### Tell CGI.pm to start escaping again # Move on with the form, with HTML escaping back on... print $q->p, # <-- print statement three $q->b( "Task:" ), $q->br, $q->popup_menu( -name => 'task', -onchange => 'my_form.submit', -values => ['blank','cfg','loc','inv','bw'], ); } ------------------- Okay, what I'd like to do is tighten that up a bit. I'd like to put it all inside of one print; statement, but I don't want to have to tell CGI.pm to turn off HTML escaping for the whole form. I just want to do it for the one onClick tag in the button. If I don't turn off HTML escaping for that, then CGI.pm generates an onclick method to the button that says: onclick="location.href='me.cgi'" When I want it to say onclick="location.href='me.cgi'" If you look above, I have one print; statement for the beginning of the form, then I turn escaping off (see first ### above), then I print the button, then I turn escaping back on (2nd ### above), then I go on with my form with additional print;s. Is there a way to switch HTML escaping off for just one tag within the CGI method syntax? See ### below: What I'd like to do: -------------------- sub tt_write_form () { # Write the omnipresent parts of the form print $q->start_form( # <-- only print statement for this whole subroutine -method => 'POST', -name => 'my_form' ), # Write the reload button $q->button( -name => 'reload', -value => 'Reload?', -onclick => 'location.href=\'$self\'' ### <-- somehow set $q->{'escape'} = 0 JUST for this line??? ), # Move on with the form, with HTML escaping back on (somehow)... $q->p, $q->b( "Task:" ), $q->br, $q->popup_menu( -name => 'task', -onchange => 'my_form.submit', -values => ['blank','cfg','loc','inv','bw'] ); # <-- end of only print statment } -------------------- ***OR*** is there any way to trick CGI.pm into thinking this particular instance of -onclick isn't the same as the one defined within the module, while still having it return the correct HTML? (CGI.pm only sends the -name, -value, and -onclicks to the escapeHTML() routine, and therefore I wouldn't have to unescape at all). Thanks! Tyson -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>