我有一个Perl CGI表单的问题,它有两个提交按钮。让我用示例代码解释。
print $q->start_form(
-name => 'main',
-method => 'POST',
);
print $q->popup_menu( #drop down list
-name => 'popup1',
-values => @test,
-default => 'value2'
print $q->submit(
-name => 'do one thing',
);
print $q->submit(
-name => 'do two things',
);
if ($q->param("do one thing")) {
do certain functions;
}
if ($q->param("do two things")) {
##########output a checkbox#############
print $q->checkbox_group(
-name => 'checkemail',
-values => @test2,
-columns => 2,
-rows => 10,
);
###############submit the checkbox###########
print $q->submit(
-name => 'Submit',
);
if ($q->param("Submit")) {
do certain functions;
}
代码很简单。当我们点击"做一件事"按钮它应该做某些功能。当我们点击"做两件事"它应该显示一个复选框。表单工作正常,直到这个。复选框后面有一个提交按钮,用于提交此复选框并执行某些功能。不幸的是,如果我点击提交按钮提交复选框,它就不会在提交按钮后执行任务。在我们点击复选框的提交按钮后,它甚至不会显示复选框。任何帮助表示赞赏。
答案 0 :(得分:2)
你的缩进是混乱的。这可能是问题的一部分:您错放了处理“提交”按钮的代码。它仅在"做两件事情时运行。按下了按钮,但无法同时按下这两个按钮。修复(和可运行)代码:
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
my $q = 'CGI'->new;
my @test = qw(a b);
my @test2 = qw(A B);
print $q->start_form( -name => 'main',
-method => 'POST',
);
print $q->popup_menu( #drop down list
-name => 'popup1',
-values => \@test,
-default => 'value2');
print $q->submit(-name => 'do one thing');
print $q->submit(-name => 'do two things');
if ($q->param('do one thing')) {
print "One thing: ", $q->param('popup1'), "\n";
}
if ($q->param('do two things')) {
print $q->checkbox_group( -name => 'checkemail',
-values => \@test2,
-columns => 2,
-rows => 10,
);
print $q->submit(-name => 'Submit');
}
if ($q->param('Submit')) {
print 'Sencond thing', $q->param('checkemail'), "\n";
}
请注意,代码使用-values
中的数组引用。