Perl Popup_Menu选择

时间:2016-05-10 11:32:28

标签: perl cgi

我尝试用if / else选择popup_menu。但它不适用于if / else。

选择工作流程或任务类型会更改不同的列表。

类型的工作流程组或任务类型:

my %datatype = (
    'workflow_group' => 'Workflow Group',
    'tasktype_group' => 'TaskType',
);

值的工作流程组或任务类型:

my %workflow_group = (
    'one' => 'Contract',
    'two' => 'Exchange',
    'three' => 'Delivery',
    'four' => 'Event',
);

my %tasktype_group = (
    'one' => 'Contract',
    'two' => 'Router',
    'three' => 'DocSender',
    'four' => 'Transformer',
);

带变量的脚本(if / else):

print "<TR>";
        print $lqcgi->td({-width=>'10%',},
        $lqcgi->h3('Type'),
        $lqcgi->popup_menu(-name=>'type',
                  -values=>[qw/workflow_group tasktype_group/],
                  -labels=>\%datatype,
                  -default=>'type_select'));

        my $types = $lqcgi->param('Workflow Group');

        print "<TD><h3>Value</h3>";
        if ($types){
        print $lqcgi->popup_menu(-name=>'value',
                  -values=>[qw/one two three four/],
                  -labels=>\%workflow_group,
                  -default=>'workflow'),
        $lqcgi->submit(-type => 'tasktype_start_command', -value => 'Start', -onclick => 'javascript:()'),
        $lqcgi->submit(-type => 'tasktype_stop_command', -value => 'Stop', -onclick => 'javascript:()');
        }
        else{
        print $lqcgi->popup_menu(-name=>'value',
                  -values=>[qw/one two three four/],
                  -labels=>\%tasktype_group,
                  -default=>'tasktype'),
        $lqcgi->submit(-type => 'tasktype_start_command', -value => 'Start', -onclick => 'javascript:()'),
        $lqcgi->submit(-type => 'tasktype_stop_command', -value => 'Stop', -onclick => 'javascript:()');
        }
print "</TD></TR>";

注意:foreach my $type(@types)if (exists $types{$type})if (defined $types{$type}不起作用!谢谢你的帮助!

发现错误:

enter image description here

1 个答案:

答案 0 :(得分:1)

看起来你的代码实际上是从Perl / CGI的角度来看,但它可能不是你所期望的。我用$ types =“Workflow Group”测试了你的代码(任何定义的值都可以使用)和$ types =“”。

如果$ types等于任何内容,则会显示%workflow_group弹出窗口。如果$ types为“”,则显示%tasktype_group弹出窗口。所以if / else条件正常。这导致我得出结论你的

  my $types = $lqcgi->param('Workflow Group');

没有价值。我不确定您是否期望在用户为Type弹出窗口选择值时确定$ lqcgi-&gt; param('Workflow Group')值,然后自动更改Value弹出窗口。如果是这种情况,您可能需要在使用类似Javascript之类的选项进行Type选项后修改Value弹出窗口。希望这会有所帮助。