如何动态更改单选按钮时调用onclick功能?

时间:2014-06-09 11:34:00

标签: javascript html perl cgi

我正在处理一个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函数。它是动态发生的,并且函数不会被调用。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

好像你正在执行一些Perl代码并将直接HTML打印到输出。这被称为硬编码HTML,并不是一个好习惯。查看Template::Toolkit等模板模块,以获得更好的结果和更清晰的代码。另外,为了您自己的利益,我希望您在Perl代码的顶部使用use strictuse 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