Perl CGI,多个表单和多个提交按钮,在同一页面上执行操作

Perl CGI, Multiple forms and multiple submit button with action on the same page

本文关键字:一页 执行 操作 提交 表单 CGI Perl 按钮      更新时间:2023-09-26

如果我有几个按钮,并且"action="也在同一页上,我如何指定点击Perl CGI HTML输出上的多个按钮中的一个执行哪个操作?

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

按钮布局图片

我相信这就是所谓的

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

这是一个名为"DupNav"的Perl子例程,我不确定它是否在表单的功能中发挥了作用。这是第二个.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);
  $EntryCount=@GetEntries;
  $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++;
 }
}

我知道这是很长的时间,我真的很感激能得到任何反馈。我可以根据需要发布更多信息。再次感谢。

给所有submit按钮唯一的name属性,提交数据将只有一个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
}