我尝试用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}
不起作用!谢谢你的帮助!
发现错误:
答案 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弹出窗口。希望这会有所帮助。