2016-07-29 68 views
0

Wie ich spezifiziere, welche Aktion genommen wird, einen der mehrfachen Knöpfe auf meiner Perl CGI HTML Ausgabe treffend, da ich mehrere Knöpfe habe und "action =" auch ist auf der selben Seite?Perl CGI, Mehrfachformulare und Mehrfachübermittelnknopf mit Tätigkeit auf der gleichen Seite

Dies ist die HTML-Ausgabe und die Tasten (Prozessaktivität und doppelte Datensatz) korrekt funktionieren aber „Import Info“ (was ich zu implementieren bin versucht) ruft die „Process Activity“

hier ist die Java- Script-Code:

<script type="text/javascript" src="$HostedSiteURL/$ScriptDirectory/jquery-1.11.3.min.js"></script> 
<script type="text/javascript"> 
\$(document).ready(function() { 

\$('#importFromCAD').click(function() { 
    \$('#importNav').val(''); 
    return true; 

\$('#process-activity').click(function() { 
    \$('#DupNav').val(''); 
    return true; 
}); 

Und der Perl-CGI-HTML-Code:

sub NewRightSide 
{ 
    print " <div style=\"z-index:86;\" class=\"group-shell\">"; 
    print " <table>\n"; 
    print " <tr><td><input class=\"dial-red-button\" id=\"importFromCAD\" type=\"submit\" value=\"Import Info\"></td></tr>\n"; 
    print " <tr><td><input class=\"dial-red-button\" id=\"process-activity\" type=\"submit\" value=\"Process Activity\"></td></tr>\n"; 
    print " <tr><td><input class=\"dial-red-button\" id=\"duplicate-record\" type=\"submit\" value=\"Duplicate Record\"></td></tr>\n"; 

picture of button layout

Ich glaube, das ist die Form, die aufgerufen wird:

print "<form name=\"form\" accept-charset=\"utf-8\" method=\"post\" action=\"A_CT_DIAL8.pl\">\n"; 
if ($Nav eq "" || $Nav eq "None")   {$Nav="NewEntry";} 
print "<input type=\"hidden\" name=\"s\" value=\"$escape_session\" />\n"; 
print "<input type=\"hidden\" name=\"nav\" value=\"DIAL\" id=\"nav\">\n"; 
print "<input type=\"hidden\" name=\"Nav\" value=\"$Nav\" id=\"Nav\">\n"; 
print "<input type=\"hidden\" name=\"SubNav\" value=\"$SubNav\">\n"; 
print "<input type=\"hidden\" name=\"DupNav\" value=\"\" id=\"DupNav\">\n"; 
print "<input type=\"hidden\" name=\"nav_tab\" value=\"\" id=\"nav_tab\">\n"; 
print "<input type=\"hidden\" name=\"Report\" value=\"\" id=\"Report\">\n"; 
print "<input type=\"hidden\" name=\"TransLimit\" value=\"$TransLimit\">\n"; 

Dies ist Perlfunktionen „DupNav“ genannt, was ich bin nicht sicher, es eine Rolle, wie die Formularfunktionen spielt. Ist das die Subroutine der zweiten .click(function()) Klasse?

if ($DupNav eq "") 
    { 
    $Nav   = ""; $KeyField  = ""; # $CAD    = ""; 
    $In   = ""; $Out   = ""; $Via    = ""; 
    $Status  = ""; $Device  = ""; $ActivitySubject = ""; 
    $Memo   = ""; $currenttime = ""; $NormalMemo  = ""; 
    $CheckNewMemo = ""; $PostMile  = ""; 
    } 
    else 
    { 
     $CheckRadio="No"; 
    if ($DupWarn ne "Off") 
    { 
    $JavaWarn=$JavaWarn."Duplicated Last Entry.    "; 
    $Warn=$Warn." [ Duplicated Last Entry ]"; 
    $SubNav="Go"; 
    } 
    else 
    { 
    $JavaWarn=$JavaWarn."Use the Duplicate Record button to pre fill the   next entry with the same information as the last entry.    "; 
    $Warn=$OldWarn." [ Use the Duplicate Record button to pre fill the next entry with the same information as the last entry ]"; 
    } 
    } 
    if ($Device == 0) {$Device="";} 
    $currentdate = ""; 


    $SplitMemo=$CheckNewMemo; 
    @GetEntries=split(":DOSEP:", $SplitMemo); 
    [email protected]; 
    $Memo=$GetEntries[0]; 

    $b=1; 
    while ($b < $EntryCount) 
    { 
    $SplitExtras=$GetEntries[$b]; 
    @GetExtras=split(":", $SplitExtras); 
    $ExtraListName=$GetExtras[0]; 
    $ExtraListInfo=$GetExtras[1]; 
    if ($ExtraListName eq "PostMile") {$PostMile=$ExtraListInfo;    $DisablePostMileSection="No";}else{$Extra_Information{$ExtraListName}="$ExtraLis  tInfo";} 
$b++; 
} 

} 

Ich weiß, das ist sehr lang und ich würde wirklich jede Rückmeldung, die ich bekommen kann, schätzen. Ich kann zusätzliche Informationen nach Bedarf veröffentlichen. Danke nochmal.

+0

Ich hoffe, dies wird meine Frage ein wenig mehr zu klären. Ich hoffe, es herauszufinden, sobald die "Prozessaktivität" gedrückt ist, wo die Prozessabfolge abläuft? Irgendwelche Hinweise werden wirklich geschätzt – Allen

Antwort

1

Geben Sie alle Ihre submit Schaltflächen eindeutige name Attribute, die Vorlage Daten haben nur einen submit Parameter, der, der geklickt wurde. Finden Sie heraus, was es ist, indem Sie nach ihren name s suchen und entsprechend verarbeiten. Ein Beispielcode ist unten angegeben.

Client Side:

<form method="POST" action="/act"> 
    <input name="formid" value="1" type="hidden"> 
    <input class="delete" value="D" name="delete" type="submit"> 
    <input class="edit" value="E" name="edit" type="submit"> 
</form> 

Server Side:

if (defined param('edit')) { 
    # perhaps identify form by some checking for some hidden element 
    # process the data for edit 
} 
elsif (defined param('delete')) { 
    # perhaps identify form and process the data for delete 
}