回答編集履歴

2

余分な引数の排除

2019/02/22 05:10

投稿

FKM
FKM

スコア3633

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  unload = function(changeFlg){
36
36
 
37
- $(window).on('beforeunload', function(event) {
37
+ $(window).on('beforeunload', function() {
38
38
 
39
39
  if (changeFlg) {
40
40
 

1

解決策

2019/02/22 05:10

投稿

FKM
FKM

スコア3633

test CHANGED
@@ -7,3 +7,75 @@
7
7
  まずはこのページの1と同じ、 onclick="submitAction('~,~');return false"で
8
8
 
9
9
  やってみればどうでしょうか?
10
+
11
+
12
+
13
+ P.S 解決できたと思います。こういう方法でいかがでしょうか? ---
14
+
15
+
16
+
17
+ フラグを操っているのはchange及びclickイベントなので、このイベントそれぞれにフラグを分岐し、同じbeforeunloadがイベント化された関数をコールすれば大丈夫です。そして、分岐で片方にはエラーメッセージ、片方にはreturn falseとします。
18
+
19
+
20
+
21
+ ```jQuery
22
+
23
+
24
+
25
+ $(function(){
26
+
27
+
28
+
29
+ var changeFlg;
30
+
31
+
32
+
33
+ //(1)
34
+
35
+ unload = function(changeFlg){
36
+
37
+ $(window).on('beforeunload', function(event) {
38
+
39
+ if (changeFlg) {
40
+
41
+ return "ページを移動しようとしています。\n入力した内容が失われますがよろしいですか?";
42
+
43
+ }
44
+
45
+ return false;
46
+
47
+ });
48
+
49
+ }
50
+
51
+
52
+
53
+ //(2)
54
+
55
+ $("form textarea, form select").change(function(event) {
56
+
57
+ changeFlg = false;
58
+
59
+ unload(changeFlg);
60
+
61
+ });
62
+
63
+
64
+
65
+ //(3)
66
+
67
+ $("button[name=btn_regist]").click(function(event) {
68
+
69
+ changeFlg = true;
70
+
71
+ unload(changeFlg);
72
+
73
+ });
74
+
75
+
76
+
77
+ });
78
+
79
+
80
+
81
+ ```