First, thanks for the nudge in the right direction. I still don't have it quite right; . . .something about the state of the browser with regard to JavaScript vs. Perl executing on the server thing, I guess.

BTW, I've Googled around for info. on application menu systems, etc. Seems like a lot of sophisticated stuff out there. My approach is to dynamically load a drop-down (pop-up?) scrolling window from an applications table maintained in a MySQL database. -- Make a selection, and execute the associated executable object. Problem solved.

As I mentioned, a state problem apparently requires a second click on the Execute Application (i.e., Submit) button. First pass, the same Applications Menu panel is displayed. Second click, the requested application is executed. Interesting, too, that if you go back to the menu, select another ap., the thing returns to the previous ap. after which you can return to the menu, click submit, yet again, on the next ap., and the next ap. will be executed.

I haven't dwelled on the solution, but FYI, here is a sample of code that almost works. Notice that the -action argument is omitted; therefore, defaults(?) to the current document):

Using the CGI to start the form:

print header(), start_html(-title=>$title, -bgcolor=>"cyan"), checkForm(), $cgi->start_form( -name=>"apps_menu", -method=>"GET", -onsubmit=>"return checkForm( this )" );
. . .and a little farther down, notice that the "-onclick=>set_apx()" apparently is not recognized by the popup_menu()function (subroutine, . . .whatever); however; executing immediately after the call produces the somewhat desirable results. I did try placing the call to set_apx() inside the checkForm() routine that is called -onsubmit, but that did not work: :
# ------------------------------ # Display Application Menu. # ------------------------------ print qq(<tr><td width=\"175\" align=\"right\"> <b>Application: </b></td><td>), $cgi-> popup_menu ( -name=>'ap_name', -values=>\@ap_names, -labels=>\%ap_labels, -size=>'8', # -onclick=>set_apx() Not good! ); set_apx(); # Sort-of works here as planned.
. . .and finally finish up the main with the usual suspects. It's probably worth noting that regarding the design, the execute button could be eliminated and the desired application could be immediately executed "-onclick" from the popup menu (if possible, . . .should be?), because the user can only select one item from the list:
print br(), submit(-name=>"action", -value=>"Start Application"), reset, end_form(), end_html(); $dbh->disconnect(); exit(0);
. . .and here is the "Set Application to Exec." subroutine that generates the JavaScript:URL that overrides the -action argument of the form tag generated by CGI.pm:
# ---------------------------------------------------- sub set_apx { # Generate some JavaScript here: print qq(<script><!-- document.apps_menu.action=apps_menu['ap_name'].value; // --></script>); }
This event-sensitive, client-side JavaScript is obviously executing the desired application, but like an old diesel tractor, . . .you have to double-clutch it.

Suggestions?

Thanks,
Ron W.


In reply to Re^2: JavaScript to Perl: "-action" "-onsubmit" by rtwingfield
in thread JavaScript to Perl: "-action" "-onsubmit" by rtwingfield

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.