我正在使用php和会话创建一个多步骤表单,但是,当我来回走动时,我会丢失之前的值。任何解决此问题的建议。
<form id="propertyform" method="post" action="industrial.php">
<select class="element select small" id="element_1" name="property">
<option value="" selected="selected"></option>
<option value="industrial" >Industrial</option>
<option value="land" >Land</option>
<option value="office" >Office</option>
</select>
</form>
答案 0 :(得分:3)
我为心理学市场开发了一个产品,可以进行250个问题的心理测试。为了进行一个不完全压倒性的测试,我将表格分成25个问题段,同时通过div标签输出它,并附加一个顺序ID(即div1,div2,div3)每个div设置为显示:没有,只有第一个。
然后我为用户提供了一个切换当前div + 1的按钮(即如果在div 1上,它会执行$(#div2).show()
等。后退按钮则相反。
重要的是表格涵盖所有div。然后只需用提交按钮交换最后的前进/后退按钮即可。
瞧!是的,低技术。但是很快......并且没有机会永远失去前进或后退的价值。
所以,一个粗略的截断示例:
<form>
<div id="div1">
First 25 Questions
<input type="button">shows next div</input>
</div>
<div id="div2" style="display:none">
Second 25 Questions
<input type="submit">Submit Form</input>
</div>
</form>
答案 1 :(得分:1)
您是否在会话中设置表单中的值?
实施例
<form id="step1">
<input type="text" name="firstQuestion" id="firstQuestion"
<? if(isset($_SESSION['firstQuestion'])): ?> value="<?=$_SESSION['firstQuestion']?>"
<? endif; ?> >
<select class="element select small" id="element_1" name="property">
<option value="" <?php if(isset($_SESSION['property']) && $_SESSION['property'] == ""): ?> selected="selected"<? endif; ?> ></option>
<option value="industrial" <?php if(isset($_SESSION['property']) && $_SESSION['property'] == "industrial"): ?> selected="selected"<? endif; ?>>Industrial</option>
<option value="land" <?php if(isset($_SESSION['property']) && $_SESSION['property'] == "land"): ?> selected="selected"<? endif; ?>>Land</option>
<option value="office" <?php if(isset($_SESSION['property']) && $_SESSION['property'] == "office"): ?> selected="selected"<? endif; ?>>Office</option>
</select>
</form>
答案 2 :(得分:0)
要防止刷新和历史记录导航触发表单处理,请在表单处理程序完成之后向流添加类似内容:
header("Location: myStep2.php");
这会将用户重定向到myStep2.php并防止踩踏值。
需要注意的是,如果您按照此方法操作并且需要允许用户返回上一页,则需要提供导航菜单,按钮,链接等。按“返回”将重新提交上一页的值。