0

我需要一个表单,其中复选框将在提交表单时根据它们的选择打开不同的页面。

所以,假设我有这个简单的形式:

<form action="" method="post">
<input value="1" type="checkbox" name="sign" />     
<input value="2" type="checkbox" name="sign" />     
<input value="3" type="checkbox" name="sign" />     
<input value="4" type="checkbox" name="sign" />     
<input value="5" type="checkbox" name="sign" />     
<input type="submit" /> 
</form>

当用户检查值 1 并提交时,他将被重定向到页面 A。如果用户检查 1 和 4,他将被重定向到不同的页面(例如页面 F)。如果用户检查 2、3 和 4,他将被重定向到页面 R,依此类推......将有 25 种不同的组合,因此,当用户提交表单时,此表单会产生 25 种不同的页面结果。

换句话说,当表单以某种方式提交时,系统会读取哪些复选框被选中,并将每个可能的组合与不同的 URL 相关联。

可以做到吗?如果是这样,怎么做?有人做过类似的东西吗?我已经搜索了很长时间的解决方案,但只找到了稍微相似的解决方案,而不是我需要的,所以任何帮助将不胜感激。

4

5 回答 5

1

HTML:

<form action="" method="post">
<input value="1" type="checkbox" name="sign[1]" />     
<input value="2" type="checkbox" name="sign[2]" />     
<input value="3" type="checkbox" name="sign[3]" />     
<input value="4" type="checkbox" name="sign[4]" />     
<input value="5" type="checkbox" name="sign[5]" />     
<input type="submit" /> 
</form>

PHP:

if (isset($_POST['sign'][1]))
    header("Location: a.php");
elseif(isset($_POST['sign'][2]) AND isset($_POST['sign'][3]))
    header("Location: b.php");
于 2013-01-15T18:00:26.490 回答
0

这可以通过几种方式完成。一种是可以使用javascript拦截表单提交,改变表单“action”的值,然后执行提交。

第二种方法可能是将所有这些数据发送到单个脚本,并根据所选值执行重定向到预期页面。

于 2013-01-15T18:00:38.507 回答
0

从应该看起来像:

<form action="" method="post">
<input value="1" type="checkbox" name="sign[]" />     
<input value="2" type="checkbox" name="sign[]" />     
<input value="3" type="checkbox" name="sign[]" />     
<input value="4" type="checkbox" name="sign[]" />     
<input value="5" type="checkbox" name="sign[]" />     
<input type="submit" /> 
</form>

像这样的帖子:

if(!empty($_POST['sign'])) {
    if(in_array(1, $_POST['sign'])) {
        // if just 1, go to page
    } elseif(in_array(1, $_POST['sign']) && in_array(4, $_POST['sign'])) {
        // if 1 and 4, go to page
    }
}
于 2013-01-15T18:01:04.193 回答
0

您可以将每个输入视为一点。因此,您将始终需要考虑 5 位。

然后定义对应于每个可能值的 25 个条目的关联数组:

00001
00010
...

var links = {
    "00001" : "www.google.com",

];

然后,当您提交表单时,只需根据值设置target属性。form

于 2013-01-15T18:01:45.047 回答
0

如果我是你并且除了遵循这个想法我别无选择,我会在 jQuery 中使用类似的东西(假设你的帖子变量在你想要到达的页面中被处理):

<form action="" method="post" id="myForm">
    <input value="1" type="checkbox" name="sign[]" />     
    <input value="2" type="checkbox" name="sign[]" />     
    <input value="3" type="checkbox" name="sign[]" />     
    <input value="4" type="checkbox" name="sign[]" />     
    <input value="5" type="checkbox" name="sign[]" />     
    <input type="submit" /> 
</form>


$("#myForm").submit(function() {
    var checked_array = new Array();
    $("#myForm input").each(function() {
        if ($(this).is(":checked")
            checked_array.push($(this).attr("value"));
    });

    if ( checked_array.indexOf(2) !== -1 && checked_array.indexOf(5) !== -1)
       ("#myForm").attr("action", "/url1.php") ;
    else if etc...
});
于 2013-01-15T18:07:17.463 回答