我的perl cgi代码中有这2个按钮,即使我为每个按钮分配了不同的动作,也会执行相同的操作 这是代码
print
start_html(),
start_form(-action => 'com.pl'), #first action for first button
submit(-name => 'submit', -value => 'View com.pl'), //on cliking this redirects to com.pl script
start_form(-action => 'about.pl'),
submit(-name => 'submit', -value => 'About Us'); //On clicking this button it redirects to com.l instead about.pl
end_form,
end_html;
如何更改此设置,以便点击“关于我们”按钮会将我重定向到about.pl
答案 0 :(得分:3)
我发现问题是你开始<FORM>
两次,但你只关闭了一次!所以你有一个FORM
和(我假设)只有当按下SUBMIT
按钮时才会激活第一个,因为第二个FORM
被认为是错误。
请从浏览器发布HTML
页面来源。这有助于分析结果。
我建议对两个按钮实施onClick
操作。所以你可以启动你想要的任何脚本。
答案 1 :(得分:2)
HTML只允许<form>
拥有一个action
。如果您想要单独的action
,则需要使用单独的表单或使用javascript在提交之前更改表单的操作。
获得相同效果的更常见方式是只有一个(基本)URL,所有形式的提交都会到达,不同的按钮为“action”参数赋予不同的值。接收提交的代码然后检查此参数以确定要执行的操作。
这种常见方式的更高级(更简单)版本是使用Web框架(我的个人偏好是Dancer)来处理确定请求的操作的过程并将请求分派给正确的{ {1}}处理它。
除此之外,即使你坚持使用CGI.pm而不是使用“真正的”框架,我也建议不要使用CGI.pm的HTML生成功能。如今,将它们包括在CGI.pm中通常被认为是一个坏主意。使用模板系统(例如Template::Toolkit或Xslate)是一种更加灵活和可维护的方法。
答案 2 :(得分:0)
使用表单执行此操作没有意义。如果您想要的只是彼此相邻的两个按钮形式。然后我会使用带有超链接的CSS。
<style>
a.button5 {
-webkit-appearance: button;
-moz-appearance: button;
appearance: button;
text-decoration: none;
color: initial;
}
</style>
<a class="button5" href="com.pl">View com.pl</a> <a class="button5" href="about.pl">About Us</a>