2016-07-29 11 views
0

私はいくつかのボタンを持っているので、私のPerl CGI HTML出力の複数のボタンのうちの1つに当たるアクションを指定するにはどうすればいいですか?同じぺージに?Perl CGI、複数のフォームと複数のサブミットボタンが同じページにある場合

これはHTML出力とボタンで(プロセス活動とレコードを複製)が正常に動作しますが、(私が実装しようとしている)「インポート情報は、」ここで「プロセス・アクティビティ」

はJavaベースで呼び出しますスクリプトコード:

<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; 
}); 

とPerl CGI HTMLコード:

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

私はこれが呼び出される形であると考えている:

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"; 

これはPerlのサブルーチンでは、私はそれがどのようにフォームの機能で役割を果たしているかわからない「DupNav」と呼ばれます。これは第2の.click(function())クラスのサブルーチンですか?

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++; 
} 

} 

私はこれが非常に長いことを知っています。私が得ることができるフィードバックは本当にありがたいです。必要に応じて追加情報を掲載することができます。ありがとうございました。

+0

私は、これはもう少し私の質問を明確にします期待して」。私は "プロセス活動"が一度押されるとプロセスのシーケンスがどこに行くのかを知りたいと思っていますか?ヒントは本当に感謝しています – Allen

答えて

1

すべてのsubmitボタンに固有のnameアトリビュートを指定すると、送信データにはクリックされたパラメータが1つだけ表示されます(submit)。それが何であるかは、nameを確認し、それに応じて処理してください。いくつかのコードの例を以下に示します。

クライアント側:

<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> 

サーバーサイド:

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 
} 
関連する問題