重定向表单用户提交时,基于无线电选择仅


Redirect Form User When Submit Based On Radio Selection Only

我对编码的了解非常少,所以我要边学边学。

在我的多页表单中,我有4个"无线电"类型选择,最终用户必须选择至少1个才能继续使用表单。我想做的是有表单重定向用户到特定的页面关系到他们所选择的无线电输入当他们提交表单。

我看了你的视频,读了很多旧的帖子,我尝试的一切似乎都不起作用。

我不确定javascript, jquery或php是否最好使用if或isset语句,由于我的知识,我没有更新正确的搜索短语,以便找到正确的方法,所以经过14个小时的尝试,我不得不寻求你的专业知识!

任何简单的方法都是足够的,非常有帮助的,因此我希望有人能帮我解决这个问题。

例如,4个单选项将放在:

<input class="form-radio" type="radio" id="hbs" name="options" value="hbs" />  ==>  page1.php
<input class="form-radio" type="radio" id="bs"  name="options" value="bs"  />  ==>  page2.php
<input class="form-radio" type="radio" id="pvr" name="options" value="pvr" />  ==>  page3.php
<input class="form-radio" type="radio" id="epc" name="options" value="epc" />  ==>  page4.php 

我需要的代码只重定向用户时,他已经点击提交,这样做的原因是有多个字段在同一页的形式作为单选。

谢谢

您可以通过php中的header('Location: url');重定向到特定的页面。

下面是一个符合你要求的例子:

<?php
$value_to_page = array(
    "hbs" => 'page1.php',
    "bs"  => 'page2.php',
    "pvr" => 'page3.php',
    "epc" => 'page4.php',
);
if(isset($_POST['submit'])){
    // process other fields like $_POST['some-other']
    if(isset($_POST['options']) && isset($value_to_page[$_POST['options']])){
        header('Location: '.$value_to_page[$_POST['options']]);
        return;
    }
} ?>
<form method="post">
    <input type="text" name="some-other" />
    <input class="form-radio" type="radio" id="hbs" name="options" value="hbs" />
    <input class="form-radio" type="radio" id="bs"  name="options" value="bs"  />
    <input class="form-radio" type="radio" id="pvr" name="options" value="pvr" />
    <input class="form-radio" type="radio" id="epc" name="options" value="epc" />
    <button type="submit" name="submit">Send</button>
</form>

一个简单的解决方案可能是require_once您想要POST结果的页面代码,如下所示(将其放置在php文件的顶部,高于任何HTML):

<?php
switch ($_POST["options"]) {
    case "hbs":
        require_once("page1.php");
        break;
    case "bs":
        require_once("page2.php");
        break;
    case "pvr":
        require_once("page3.php");
        break;
    case "epc":
        require_once("page4.php");
}
die();
?>

好吧,这是一个好问题,这并不难,但遵循使用jQuery,你也可以看到它在jsfiddle中工作(将不能正常工作在jsfiddle安全问题,但在你的机器上试试):

<form id="myForm">
    <input class="form-radio" type="radio" id="hbs" checked="true" name="options" value="hbs"  page="page1.php" />  ==>  page1.php
    <input class="form-radio" type="radio" id="bs"  name="options" value="bs" page="page2.php"  />  ==>  page2.php
    <input class="form-radio" type="radio" id="pvr" name="options" value="pvr" page="page3.php" />  ==>  page3.php
    <input class="form-radio" type="radio" id="epc" name="options" value="epc" page="page4.php" />  ==>  page4.php
    <button type="submit">send</button>
</form>
<script>
    $(function(){
       $("#myForm").submit(function(e){
           var page = $(this).find("input[name=options]:checked").attr("page");
           this.action = page;       
       });
    });
</script>