我有2个表格,一个是初始注册(会员),另一个是外人发布。
两者都进入信息确认页面,并且都在PHP中进行错误检查。如果您提交并且您错过了一个字段并点击了BACK,则会保存第一个表单中的值...尽管第二个表单中的值会丢失。
是否有特定的排序验证,我仔细检查了DOCTYPES等。
有什么理由导致这种情况起作用/不起作用?
编辑:已修复,确保所有ELEMENT标记都已正确打开/关闭/定位,以及DOCTYPES在无法验证时返回信息。
答案 0 :(得分:3)
之前我遇到过这个问题,您必须确保所有HTML元素都已正确关闭。例如,(在末尾添加斜杠),等等。确保打开和关闭DIV而不与其他DIV重叠,这应该可以解决问题。
没什么太疯狂的
答案 1 :(得分:0)
这可能与浏览器有关。通常情况下,浏览器会在您返回时保留表单的数据。但是,如果您提交另一个表单,则该数据将丢失。 唯一的方法是每次提交两个表单或使用javascript并将数据保存在php会话中。
使用jquery(例如),您可以说每次更改输入时,整个表单都会使用AJAX发送到PHP会话。加载表单时,然后从session global var。
加载值$('#myform input').change(function(){
var formdata = $('form#myform').serialize();
$.ajax({
type: "POST",
url: "process.php",
data: formdata
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});
});
在php方面:
$_SESSION['form_cache']['form_name'] = parse_str($_POST['data']);
然后当你加载表单
<?php
$test = isset($_SESSION['form_cache']['form_name']['test']) ? $_SESSION['form_cache']['form_name']['test'] : '';
?>
<input type="text" name="test" value="<?=$test?>" />