Perl 中的隐藏字段操作



我正在尝试用perl编写一个多问题调查,一次显示一个带有"上一个"和"下一个"按钮的问题。最终我需要从文件中读取问题,但我还没有走那么远,所以我现在正在硬编码它们。

部分作业要求是我必须使用CGI,所以我不能直接打印任何html。

目前,我让脚本打印出第一个问题,以及两个提交按钮,一个标记为"下一个",另一个标记为"上一个"。


print $form->submit(-name=>'question', -value=>'next'); print $form->submit(-name=>'question', -value=>'previous');

我还有一个隐藏字段:

print $form->hidden(-name=>'hidden', -value=> $currentQ);

我的想法是,一旦单击下一个,我将递增(或递减,如果单击了上一个$currentQ),以便脚本知道它在哪个问题上。

我遇到的问题是在按下按钮后操纵隐藏字段。我有:


my $direction = $form->param( 'question' ) || ''; if ($direction eq 'next'){ $currentQ++; }

以及打印语句以打印$currentQ。换句话说,每次我单击下一个时,它都应该打印一个更高的数字,但它所做的只是保持在 1(这只是为了测试功能,一旦它起作用,我就必须弄清楚如何实际实现它,以便它将打印正确的问题)。

希望这个描述是有意义的,但如果您需要更多详细信息,请告诉我。我真的被困在这个上面,所以任何帮助都非常感谢,提前感谢!

您存在不一致的情况;您将隐藏字段命名为"隐藏",但从参数"question"中获取值。 我不知道这是否存在于您的实际代码中。

使用 CGI 的一个问题是传递给输入字段生成方法的值只是一个默认值;随请求提供的值优先:

use CGI;
$form = CGI->new("hidden=41");
print $form->hidden(-name=>'hidden', -value=>42);

指纹

<input type="hidden" name="hidden" value="41"  />

要更改此设置,您需要提供 -override 参数:

print $form->hidden(-name=>'hidden', -value=>42, -override=>1);

或更改参数的存储值:

$form->param('hidden',42);
print $form->hidden(-name=>'hidden', -value=>42);

在调用隐藏方法生成 html 之前,请确保执行"if next,增量"逻辑。

最新更新