1

私は 2 つのフォームを持っています。1 つは初期登録 (メンバー) で、もう 1 つは部外者の投稿用です。

どちらも情報の確認ページに移動し、PHP でエラー チェックを行います。送信時にフィールドが欠落していて [戻る] を押すと、最初のフォームの値が保存されますが、2 番目のフォームの値は失われます。

並べ替えの特定の検証はありますか、DOCTYPES などを再確認しました。

これが機能する/機能しない原因について何か考えはありますか?

編集: すべての ELEMENT タグが適切に開いている/閉じている/配置されていることを確認し、DOCTYPES が検証に失敗したときに情報を返すように修正しました。

4

2 に答える 2

3

以前にこの問題が発生したことがあります。すべての HTML 要素が適切に閉じられていることを確認する必要があります。たとえば、(末尾にスラッシュを追加)
などのように、DIV が他の DIV と重なることなく開いたり閉じたりしていることを確認してください。これで問題が解決するはずです。

あまりにもクレイジーなことはありません

于 2012-10-30T15:24:32.160 に答える
0

これはブラウザに関連している可能性があります。通常、ブラウザは戻ったときにフォームのデータを保持します。ただし、別のフォームを送信すると、そのデータは失われます。唯一の方法は、毎回両方のフォームを送信するか、javascript を使用してデータを php セッションに保持することです。

たとえば、jquery を使用すると、入力が変更されるたびに、AJAX を使用してフォーム全体が PHP セッションに送信されます。フォームをロードするときは、セッションのグローバル変数から値をロードします。

$('#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?>" />
于 2012-10-30T15:01:29.963 に答える