2016-05-10 16 views
0

我嘗試popup_menu選擇與if/else。但它不適用於if/else。Perl Popup_Menu選擇

工作流程選擇或任務類型隨不同的列表而變化。

工作流程組或Tasktyp爲類型:

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', 
); 

腳本變量(如果/其他):

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

+0

您的代碼有幾個問題。我不完全明白你想要做什麼。 '@types eq'Workflow Group''不符合你的想法。它在標量上下文中評估'@ types',所以如果該數組中有一個元素,則它變爲'1'。 '1 eq'工作流組'是錯誤的。 – simbabque

+0

@simbabque如果我在工作流組中使用列表中的'%dataworkflow_group'或列表中的'%tasktype_group'的'Tasktype'。 '1 eq'工作流程組''不起作用。我嘗試'如果(存在$ types {$ type})'或'if(未定義的$ types {$ type})',但那兩者都不起作用。 – Markus

+0

請編輯您的問題並修復代碼中的拼寫錯誤。有分號和逗號混在一起,不清楚這是否是問題的一部分,或者只是在複製/粘貼時發生錯誤。顯示你的_real code_。 – simbabque

回答

1

看起來像你的代碼實際上是從一個Perl/CGI角度開展工作,但它可能不是你期待什麼。我已經用$ types =「Workflow Group」(任何定義的值都可以)和$ types =「」測試了你的代碼。

如果$ types等於任何值,則會顯示%workflow_group彈出窗口。如果$ types是「」,則顯示%tasktype_group彈出窗口。所以if/else條件正在工作。這導致我得出結論,你的

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

沒有價值。我不確定您是否期望當用戶爲類型彈出框選擇一個值時確定$ lqcgi-> param('Workflow Group')值,然後自動更改「值」彈出窗口。如果是這種情況,在使用類似Javascript的類型選擇之後,您可能需要修改「值」彈出窗口。希望這可以幫助。

+0

啊。你是對的!我必須嘗試使用​​Javascript。 Javascript應該有很好的功能。謝謝! – Markus