0

[送信]ボタンをクリックしたかどうかに関係なく、ユーザーがページを離れたときにプログラムでフォームを送信しようとしています。私は過去にこのメソッドを使用して関数内からフォームを送信しましたが、何らかの理由でそれを機能させることができませんonclick

ユーザーが[送信]ボタンをクリックすると、フォームが正しく送信されるため、htmlフォームとphpが正しく設定されています。私はjquery-1.8.2を使用しています

<form name="form2" id="form2" method="post" action="form2-exec.php">
    <!-- Form Elements -->
    <a class="back" href="form1.php" onClick="submitForm()">BACK</a>
    <a href="#" class="next"><input type="submit" value="SUBMIT" /></a>
</form>

<script language="javascript" type="text/javascript">
function submitForm() {
    $("#form2").submit();
}
</script>

クリック機能も使ってみました

$(".submitForm").click(function () {
$("#taste").submit();
});

そして、HTMLのこの行を置き換えます。

<a class="back" href="form1.php" onClick="submitForm()">BACK</a>

と:

<a class="back submitForm" href="form1.php">BACK</a>
4

3 に答える 3

1

そのトリッキーな状況。フォームを送信すると、戻るボタンのリダイレクトは機能しません。また、hrefを使用して戻るボタンのクリックでリダイレクトすると、クリック機能が機能するまでに送信が機能しなくなり、次のページが読み込まれます。jqueryを使用してajax呼び出しを起動し、フォームのデータをサーバーに送信し、コールバック関数でページを前のページにリダイレクトするのはどうですか?

その方法の詳細については、この投稿を確認してください:AJAXとjQueryを使用してフォームを送信する

于 2013-03-10T19:22:17.507 に答える
1

#Whizkidは、送信が機能しない後、バックボタンを右クリックします。次の方法を試してください。jqueryonbeforeunloadイベントを使用して、フォームがまだ送信されているかどうかをテストします。送信されていない場合は、メッセージが表示され、未保存のデータがユーザーに通知されます。それらの形式で:

$(function() {
        // Set the unload message whenever any input element get changed.
        $('input').change(function() {
            setConfirmUnload(true);
        });

        // Turn off the unload message whenever a form get submitted properly.
        $('form').submit(function() {
            setConfirmUnload(false);
        });
    });

    function setConfirmUnload(on) {
        var message = "You have unsaved data. Are you sure to leave the page?";
        window.onbeforeunload = (on) ? function() { return message; } : null;
    }
于 2013-03-10T19:42:01.897 に答える
0

HTML内の必要なすべてのリンクを名前属性を持つ送信ボタンに変更し、クリックしたボタンに基づいてユーザーをリダイレクトするステートメントをPHPに追加することで、この問題を解決しました。

HTML

<input type="submit" name="whereto" value="BACK" />
<input type="submit" name="whereto" value="SUBMIT" />

PHP

// Insert Statement
if ($_POST['whereto'] == 'BACK') {
    header("location: form1.php");
} elseif ($_POST['whereto'] == 'SUBMIT') {
    header("location: form3.php");
}
于 2013-03-12T18:46:59.673 に答える