0

まず、私は Web フォームと JavaScript の初心者であり、Google で 2 日間検索しても結果が得られませんでした。ユーザーがページを終了する前に、入力したデータを保存するかどうかをユーザーに尋ねようとしています。javascript ifステートメントをトリガーする入力が実行されたかどうかを示すテキストボックスがあります。ユーザーがページ内に含まれるコントロールを使用してページから離れた場合、私のコードは機能しています。右上隅の [X] をクリックするか、[ファイル]/[終了] を選択しても機能しません。以下は私のコードです。

     <script type="text/javascript" >
     var needToConfirm = "False";
     var hdnNeedToConfirm = ""
     window.onbeforeunload = confirmExit;
     function confirmExit() {
         __doPostBack('<%= Page.Master.FindControl("MainContent").FindControl("PADForm").ClientID %>', '');
         __doPostBack('<%= Page.Master.FindControl("MainContent").FindControl("HiddenPanel").ClientID %>', '');
         hdnNeedToConfirm = document.getElementById('<%= Page.Master.FindControl("MainContent").FindControl("HdnNeedToConfirm").ClientID %>');
         if (hdnNeedToConfirm != null)
             needToConfirm = hdnNeedToConfirm.value;
         else
             needToConfirm = "False";
         if (needToConfirm == "True")
             window.open("SaveOrLose.aspx");
     }
</script>

上記のコードには 2 つの __dopostback ステートメントがありますが、コードの残りの部分が完了するまで、ポストバックは実際には発生しません。つまり、if ステートメントが失敗するため、保存フォームは開かれません。

あなたが与えることができる助けをいただければ幸いです!!

4

1 に答える 1

0

__doPostBack()コードから 呼び出すべきではありません。

これは、サーバー側のイベント/コードを呼び出すために ASP.NET Web フォームによってのみ呼び出される関数です。

関数の実装を調べると__doPostBack()、HTML フォームを送信していることがわかります。

したがって、プログラムは 2 回目に呼び出すポイントに到達することはありません__doPostBack()

于 2014-07-24T15:02:25.077 に答える