-1

私は過去 2 日間、javascript の悪意のある onbeforeunload 関数と戦ってきました。ユーザーがページを閉じようとしているときに警告する機能があります。ただし、ページを閉じる前に、javascripts .submit() を使用してフォームを送信したいと思います。

これは私のコードです

function setPopUpWindow(submitForm){
window.onbeforeunload = function () {
    if (submitForm == false ) {
    //alert("It worked");   --This code gets called so I know it works  
    document.getElementById("CancelScripting").submit();
    //return "Unsaved Data would be lost";
    }

}

}

私のhtmlには2つのボタンがあります。1つは(想定されている).submit()をトリガーし、もう1つはそれを無視します。

<body>
 <form action=tett.html id="popUpForm" method=POST>
<script>setPopUpWindow();</script>
<input type="submit" id="submit_button" onclick="setPopUpWindow(true);">
<input class=b1 type=submit id="CancelScripting"  style="visibility:hidden"  value="CancelScripting" >
</body>

2 番目の入力の setPopWindow 値が定義されていないため、false になります。何らかの理由で、送信がうまく機能していません。

--------------私の質問への編集---------------------- ------------------------- ユーザーがウィンドウの「X」ボタンを閉じてページを離れても、フォームを送信したいと思います。これが隠しボタンがある理由です...人々が私の質問を誤解しているようです.

4

2 に答える 2

1

あなたができる唯一のことは、ユーザーが本当にページを離れたいかどうかを尋ねることです。

<head>
    <script type="text/javascript">
        var submitForm = false;
        window.onbeforeunload = function () {
            if(submitForm == false){
                return 'You have an unfinished form ...';
            }
        }
        function setPopUpWindow(type){
            submitForm = true;
        }
    </script>
</head>
<body>
   <form action="" method="post" name="SubmitForm" id="SubmitForm">
      <input type="submit" id="submit_button" onclick="setPopUpWindow(true);">
   </form>
</body>
于 2012-08-14T18:11:28.563 に答える
0

あなたがやりたいのは、ボタンではなくフォームを次のようにして送信することだと思います。

document.forms["formId"].submit();

ここformIdで、はフォームのIDです。

また、フォームが存在するコードのどこにも表示されませんが、ボタンはフォームタグ内にある必要があります。

たとえば、次のようになります。

<body>
<script>setPopUpWindow();</script>
<form id="formId" action="" method="post">
    <input type="submit" id="submit_button" onclick="setPopUpWindow(true);">
    <input class=b1 type=submit id="CancelScripting"  style="visibility:hidden" value="CancelScripting" >
</form>
</body>
于 2012-08-14T18:11:51.997 に答える