teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

余分な引数の排除

2019/02/22 05:10

投稿

FKM
FKM

スコア3662

answer CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  //(1)
18
18
  unload = function(changeFlg){
19
- $(window).on('beforeunload', function(event) {
19
+ $(window).on('beforeunload', function() {
20
20
  if (changeFlg) {
21
21
  return "ページを移動しようとしています。\n入力した内容が失われますがよろしいですか?";
22
22
  }

1

解決策

2019/02/22 05:10

投稿

FKM
FKM

スコア3662

answer CHANGED
@@ -2,4 +2,40 @@
2
2
  [IEでonbeforeunloadを使ったときの挙動](https://hacknote.jp/archives/5068/)
3
3
 
4
4
  まずはこのページの1と同じ、 onclick="submitAction('~,~');return false"で
5
- やってみればどうでしょうか?
5
+ やってみればどうでしょうか?
6
+
7
+ P.S 解決できたと思います。こういう方法でいかがでしょうか? ---
8
+
9
+ フラグを操っているのはchange及びclickイベントなので、このイベントそれぞれにフラグを分岐し、同じbeforeunloadがイベント化された関数をコールすれば大丈夫です。そして、分岐で片方にはエラーメッセージ、片方にはreturn falseとします。
10
+
11
+ ```jQuery
12
+
13
+ $(function(){
14
+
15
+ var changeFlg;
16
+
17
+ //(1)
18
+ unload = function(changeFlg){
19
+ $(window).on('beforeunload', function(event) {
20
+ if (changeFlg) {
21
+ return "ページを移動しようとしています。\n入力した内容が失われますがよろしいですか?";
22
+ }
23
+ return false;
24
+ });
25
+ }
26
+
27
+ //(2)
28
+ $("form textarea, form select").change(function(event) {
29
+ changeFlg = false;
30
+ unload(changeFlg);
31
+ });
32
+
33
+ //(3)
34
+ $("button[name=btn_regist]").click(function(event) {
35
+ changeFlg = true;
36
+ unload(changeFlg);
37
+ });
38
+
39
+ });
40
+
41
+ ```