2016-05-10 7 views
0

Ich versuche, Popup-Menü mit If/Else auswählen. Aber es funktioniert nicht mit if/else.Perl Popup_Menu Auswahl

Die Select für Workflow oder Tasktyp ändern sich mit verschiedenen Listen.

Workflow-Gruppe oder Tasktyp für Typ:

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

Workflow-Gruppe oder Tasktype für Wert:

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

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

Script mit Variable (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>"; 

Hinweis: foreach my $type(@types), if (exists $types{$type}), if (defined $types{$type} funktioniert nicht! Danke für deine Hilfe!

Hier ist falsch finden:

enter image description here

+0

Es gibt ein paar Probleme mit Ihrem Code. Ich verstehe nicht ganz, was Sie zu tun versuchen. '@types eq 'Workflow Group' tut nicht, was Sie denken. Es wertet '@ types' im skalaren Kontext aus, so dass es '1' wird, wenn es ein Element in diesem Array gibt. Und '1 eq 'Workflow Group' ist falsch. – simbabque

+0

@simbabque wenn ich bei 'Workflow Group' für'% dataflow_group' in Listen oder 'Tasktyp' für'% tasktype_group' in Listen nehme. '1 eq 'Workflow Group' funktioniert nicht. Ich versuche 'if (exists $ types {$ type})' oder 'if (nicht definierte $ types {$ type})', aber das funktioniert auch nicht. – Markus

+0

Bitte bearbeiten Sie Ihre Frage und korrigieren Sie die Tippfehler in Ihrem Code. Es sind Semikolons und Kommas durcheinander und es ist nicht klar, ob das ein Teil des Problems ist, oder einfach ein Fehler beim Kopieren/Einfügen hier. Zeigen Sie Ihren _real Code_. – simbabque

Antwort

1

Sieht aus wie ist Ihr Code tatsächlich von einem Perl/CGI-Perspektive arbeiten werden, aber es kann nicht sein, was Sie erwarten. Ich habe Ihren Code sowohl mit $ types = "Workflow Group" (jeder definierte Wert würde funktionieren) als auch mit $ types = "" getestet.

Wenn $ types gleich ist, wird das Popup% workflow_group angezeigt. Wenn $ types "" ist, wird das% tasktype_group Popup angezeigt. Die if/else-Bedingungen funktionieren also. Und das führt mich zu dem Schluss, dass Ihr Wert keinen Wert hat. Ich bin mir nicht sicher, ob der Parameter $ lqcgi-> param ('Workflow-Gruppe') bestimmt wird, wenn der Benutzer einen Wert für das Popup-Fenster Typ auswählt und dann das Popup-Feld Wert automatisch ändert. Wenn dies der Fall ist, müssten Sie wahrscheinlich das Popup-Fenster "Wert" ändern, nachdem die Auswahl "Typ" mit etwas wie Javascript erfolgt ist. Hoffe das hilft.

+0

Ah. Du hattest Recht! Ich muss Javascript ausprobieren. Javascript sollte gut funktionieren. Vielen Dank! – Markus