2016-05-10 23 views
0

if/elseでpopup_menuを選択しようとしました。しかしif/elseではうまく動作しません。Perlポップアップメニュー選択

ワークフローまたはタスクタイプの選択を異なるリストで変更します。

タイプのため

ワークフローグループまたはTasktyp:

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

価値のワークフローグループまたは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}が機能していません!お手伝いありがとうございます!ここで

は間違って見つけることです:あなたのコードは、実際のP​​erl/CGIの観点から取り組んでいるよう

enter image description here

+0

コードにはいくつかの問題があります。私はあなたがしようとしていることを完全に理解していません。 '@types eq 'Workflow Group'はあなたの考えをしません。スカラコンテキストで '@ types'を評価するので、その配列に要素が1つあれば' 1 'になります。そして、 '1 eq' Workflow Group 'はfalseです。 – simbabque

+0

@simbabqueリストの '%dataworkflow_group'の'ワークフローグループ 'を、リストの'%tasktype_group'の 'Tasktype'を取ります。 '1 eq 'Workflow Group'は動作していません。私は 'if(exists $ types {$ type})'や'if(unfined $ types {$ type}) 'を試していますが、それもうまくいきません。 – Markus

+0

あなたの質問を編集して、コードの入力ミスを修正してください。セミコロンとカンマが混在していて、それが問題の一部であるかどうかは不明です。ここでコピー/貼り付けするとエラーが発生します。 _real_を表示する_。 – simbabque

答えて

1

は見えるが、それはあなたが期待しているものではないかもしれません。私はあなたのコードを$ types = "Workflow Group"(定義された任意の値が動作する)と$ types = ""の両方でテストしました。

$ typesが何かと等しい場合、%workflow_groupポップアップが表示されます。 $ typesが ""の場合、%tasktype_groupポップアップが表示されます。したがって、if/else条件が機能しています。そして、これはあなたの結論につながります。

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

は価値がありません。ユーザーがTypeポップアップの値を選択してから、Valueポップアップを自動的に変更すると、$ lqcgi-> param( 'Workflow Group')値が決定されるかどうかはわかりません。そのような場合は、Javascriptのようなものを使用してタイプの選択が行われた後に、値のポップアップを変更する必要があります。お役に立てれば。

+0

Ah。あなたは正しかった!私はJavascriptを試す必要があります。 JavaScriptは機能するはずです。ありがとうございました! – Markus

関連する問題