在谷歌搜索之后,我找不到很多例子,我的试验也无法控制我的单选按钮文本的字体/类。
$cgi->radio_group( { -name => "product-$i", -values => \@p, -labels => \%labs,
-default => $thisP , -labelattributes => { -class => 'element' } } )生成以下内容:
input name="product-3" value="1X" labelattributes="HASH(0xa9fd6cc)" type="radio"这似乎非常奇怪,因为我遵循了CGI指南中的语法,但显然这是不正确的。
我还尝试使用-attributes而不是-labelattributes执行相同的语句,结果如下所示
$cgi->radio_group( { -name => "product-$i", -values => \@p, -labels => \%labs,
-default => $thisP , -attributes => { -class => 'element' } } )生成以下内容:
input name="product-3" value="1X" type="radio"因此,这显然没有任何作用。
非常感谢您的帮助!
发布于 2014-02-07 06:38:50
其他人将信息提供到模板系统中,这是首选的。关于您的原始问题,您可能使用的是过时版本的CGI。使用-labelattributes属性时,您遇到的问题不能在高于3.40的版本中复制。
use CGI;
print CGI->VERSION;发布于 2014-02-07 06:33:36
使用像Template Toolkit这样的模板库比使用CGI生成HTML更容易(在可读性和可维护性方面都是如此)。下面是一个TT模板示例:
<html>
<head>
<title>Hello, Template Toolkit!</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<h1>Behold...buttons!</h1>
[% FOREACH button = buttons %]
<label>[% button.label %]<input type="radio" name="[% group_name %]"
value="[% button.value %]" class="foo"/></label>
[% END %]
</body>
</html>请注意,它主要是普通的HTML。[%和%]中的位是TT指令。您可以在CGI脚本中使用模板,如下所示:
#!/usr/bin/perl -T
use strict;
use warnings;
use CGI;
use Template;
my @buttons = (
{ value => 1, label => 'foo' },
{ value => 2, label => 'bar' },
);
my $template_vars = {
group_name => 'foo',
buttons => \@buttons,
};
my $q = CGI->new;
print $q->header;
my $tt = Template->new or die Template->error;
$tt->process('foo.tt2', $template_vars) or die $tt->error;请注意,使用CSS样式表执行元素的可视样式是一种很好的实践。这包括标签的字体之类的东西。
运行上面的CGI时,HTML输出如下所示:
<html>
<head>
<title>Hello, Template Toolkit!</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<h1>Behold...buttons!</h1>
<label>foo<input type="radio" name="foo"
value="1" /></label>
<label>bar<input type="radio" name="foo"
value="2" /></label>
</body>
</html>https://stackoverflow.com/questions/21613747
复制相似问题