将未显示的复选框值发布到Perl CGI中的下一个程序

时间:2014-05-06 06:13:49

标签: javascript perl checkbox cgi

我是Perl CGI的新手。我的代码如下所示。

#!c:/xampp/perl/bin/perl.exe
use warnings;
use CGI;
my $q = CGI->new; 
print $q->header;
print "<html><head><title>Test</title></head>\n";
print '<body>';
@server = $q->param('sel');
if (!@server) 
{
    print '<p> please select a checkbox</p>';
    exit;
}
else
{
    print '<form action="next.pl" method="POST" id="sel" >';
    foreach my $i (@server) {
        print '<input type="checkbox" name="DEL"   value="';
        print $i;
        print ' checked ">';
        print $i;
        print '<br />';
    }
    print '<input type="submit" value="Kill">';      
    print '<form>';
    print '</body></html>';
} 

在代码的第一部分中,我使用复选框名称“sel”获取从上一个程序中勾选的复选框列表,并将其存储在阵列服务器中。我在foreach循环中使用相同的数组,并使其成为带有名称的复选框。

现在在上面的代码中我不希望显示复选框。我只想提交按钮进行显示。当我单击提交按钮时,我希望我在表单中选中的复选框转到下一页。

我怎么能做到这一点。请帮忙。

1 个答案:

答案 0 :(得分:0)

隐藏复选框的一种方法是使用<span>标记:

use strict;
use warnings;
use CGI;
my $q = CGI->new; 
print $q->header;
print $q->start_html(-title => 'Test');
my @server = $q->param('sel');
if (!@server) {
    print $q->p('please select a checkbox');
    print $q->end_html();
    exit;
} else {
    print $q->start_form(-method => "POST", 
                         -action => "next.pl",
                         -id => "sel");
    print $q->span({hidden=>1},
          $q->checkbox_group(-name => "DEL",
                             -values => \@server,
                             -default => \@server,
                             ));
    print $q->submit(-name => "submit",
                     -value => "Kill");      
    print $q->end_form();
    print $q->end_html();
} 

我更喜欢使用CGI.pm提供的HTML构建方法。有助于将HTML保留在Perl之外。