我正在处理一个CGI文件,它从查询字符串中获取以下参数并使用它,如下所示。
$rettype = p->param('rettype');
if($rettype eq "A")
{
$achecked="checked";
$rchecked="";
}
if($rettype eq "R")
{
$achecked="";
$rchecked="checked";
}
这在文件的后面部分中使用,该部分选择需要选择哪个单选按钮。
<INPUT TYPE="radio" name="gctyp" VALUE="a" $achecked onClick="showTextArea()";>Add
<INPUT TYPE="radio" name="gctyp" VALUE="r" $rchecked onClick="hideTextArea()";>Remove
现在,我希望根据选中的选项调用单选按钮中存在的onclick JS函数。它是动态发生的,并且函数不会被调用。
感谢您的帮助
答案 0 :(得分:1)
好像你正在执行一些Perl代码并将直接HTML打印到输出。这被称为硬编码HTML,并不是一个好习惯。查看Template::Toolkit等模板模块,以获得更好的结果和更清晰的代码。另外,为了您自己的利益,我希望您在Perl代码的顶部使用use strict
和use warnings
。
此外,您的HTML标记以大写形式编写。不推荐使用,使用小写标签和参数,并在关闭不具有结束标记的标记之前添加/
,就像input
案例一样。
话虽如此,这是如何解决你提到的问题的一个例子:
my $javascript_call;
$rettype = p->param('rettype');
if ($rettype eq "A") {
$achecked = "checked";
$rchecked = "";
$javascript_call = 'showTextArea()';
}
if ($rettype eq "R") {
$achecked = "";
$rchecked = "checked";
$javascript_call = 'hideTextArea()';
}
print <<END;
<input type="radio" name="gctyp" value="a" $achecked onclick="showTextArea()" />Add
<input type="radio" name="gctyp" value="r" $rchecked onclick="hideTextArea()" />Remove
<script type="text/javascript">
$javascript_call
</script>
END
我只是添加一个额外的变量,其中包含一个调用,该调用将在打印单选按钮后使用您为此提供的相同代码结构执行。
HTH