【问题标题】:multi step form, remember checkbox values in second form after submitting first one多步骤表单,在提交第一个表单后记住第二个表单中的复选框值
【发布时间】:2016-09-19 13:36:48
【问题描述】:

我使用 jquery 选项卡有多步表单,每个步骤或选项卡都有不同的表单 与行动 (action='reg.php#tabs-1') 等等.. 到最后。 每个选项卡中还有 Save 按钮,可以记住 SESSION 中的选定值。

tab1:有两个值的选择输入,例如(option1,option2)

tab2:有复选框,根据 tab1 中的选定部分(option1 或 option2)显示(如果在 tab1 中选择了 option1,则在 tab2 中显示 name='a' 和 name='b' 的复选框,或者如果选择了 option2在 tab1 中,然后在 tab2 中显示 name='x' 和 name='z' 的复选框)

在 SESSIONS 的 tab2 中按下 Save 按钮后,我也记住了这些值。

问题是:当我勾选 tab2 中的一个复选框,保存它们,然后返回 tab1,更改选择以外的任何值并单击 tab1 中的保存时,我在 tab2 中选中的复选框值变为未选中

但我希望他们被检查

php:

<?php session_start(); if (!empty($_SESSION['animal'])){if($_SESSION['animal']=='1'){$selected1='selected';$selected2='';} else {$selected2='selected';$selected1='';}}if (!empty($_POST['animal'])){if ($_POST['animal']=='1'){$selected1='selected';$selected2='';$_SESSION['animal']=$_POST['animal'];}else {$selected2='selected';$selected1='';$_SESSION['animal']=$_POST['animal'];}} if ($_POST['a']=='dog'){$_SESSION['a']=$_POST['a'];$checked1='checked';} else { $checked1='';unset ($_SESSION['a']);}if ($_POST['z']=='horse'){ $_SESSION['z']=$_POST['z']; $checked2='checked';} else {$checked2='';unset ($_SESSION['z']);}?>

脚本:

$(function() {$( "#tabs" ).tabs();});

html:

<script src="js/jquery.js"></script><link rel="stylesheet" href="js/jquery.custom/jquery-ui.css"><script type="text/javascript" src="js/jquery.custom/jquery-ui.min.js"></script><div id="tabs">
<ul>
    <li><a id="step1" href="#tabs-1">step 1</a></li>
    <li><a id="step2" href="#tabs-2" >step 2</a></li>
</ul>
<div id="tabs-1">
    <form method='post' name='field1' id='field1' action='ureg4.php#tabs-1' >
        <select name='animal' value='<?php echo $_SESSION['animal']?>'>         
            <option value='1' <?php echo $selected1?>>option one</option>
            <option value='2' <?php echo $selected2?>>option two</option>
        </select>
        <input type='submit' name='submit' value='save'>
    </form>
</div>
<div id="tabs-2">
    <form method='post' name='field2' id='field2' action='ureg4.php#tabs-2' >
        <?php 
        if ($_SESSION['animal']==1){echo "<input type='checkbox' name='a' value='dog' id='a'".$checked1." /><label for='a'><span class='icon'></span>Dog</label><br>";}
        if ($_SESSION['animal']==2){echo "<input type='checkbox' name='z' value='horse'  id='z' ".$checked2." /><label for='z'><span class='icon'></span>horse</label><br>";}
        ?>
        <input type='submit' name='submit' value='save'>
    </form>
</div>
</div>

【问题讨论】:

  • 欢迎使用 Stackoverflow - 请您使用相关代码编辑您的问题

标签: php


【解决方案1】:

检查一下

session_start(); 

if (!empty($_SESSION['animal'])){
    if($_SESSION['animal']=='1'){
        $selected1='selected';
        $selected2='';
    } else {
        $selected2='selected';
        $selected1='';
    }
}

if (!empty($_POST['animal'])){

    if ($_POST['animal']=='1'){
        $selected1='selected';$selected2='';
        $_SESSION['animal']=$_POST['animal'];
    }else {
        $selected2='selected';
        $selected1='';
        $_SESSION['animal']=$_POST['animal'];
    }
}


if (!empty($_POST)){

    if ($_POST['a']=='dog'){
        $_SESSION['a']=$_POST['a'];
        $checked1='checked';
    } else {
        $checked1='';
        unset ($_SESSION['a']);
    }
}


if (!empty($_POST)){
    if ($_POST['z']=='horse'){
        $_SESSION['z']=$_POST['z']; 
        $checked2='checked';
     } else {
        $checked2='';
        unset ($_SESSION['z']);
     }
}




if($_SESSION['z']=='horse'){
   $checked2='checked';
}


if($_SESSION['a']=='dog'){
   $checked1='checked';
}

【讨论】:

  • 谢谢 m.a.试过了,但还是一样,保存第一个表单数据后,第二个表单复选框被取消选中
猜你喜欢
  • 1970-01-01
  • 2016-11-10
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多