当你回击时,为什么表格值不会停留?

时间:2012-10-30 14:29:48

标签: php html forms

我有2个表格,一个是初始注册(会员),另一个是外人发布。

两者都进入信息确认页面,并且都在PHP中进行错误检查。如果您提交并且您错过了一个字段并点击了BACK,则会保存第一个表单中的值...尽管第二个表单中的值会丢失。

是否有特定的排序验证,我仔细检查了DOCTYPES等。

有什么理由导致这种情况起作用/不起作用?

编辑:已修复,确保所有ELEMENT标记都已正确打开/关闭/定位,以及DOCTYPES在无法验证时返回信息。

2 个答案:

答案 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?>" />