質問編集履歴

1

コードの修正

2023/05/26 08:11

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -16,6 +16,25 @@
16
16
  「見積り」ボタンを押していない → サーバーに送信する前に「(クリック)必須です」というエラーを表示させる。
17
17
  という具合です。
18
18
 
19
+ **============<修正点>=================**
20
+ 1. フラグを用意する
21
+ phpの47行目
22
+ `<input class="push" type="hidden" name="swich" value=""></input>`
23
+ のname=swichのvalueをフラグにすることにした。
24
+ ・valueが空白なら → サーバー送信する前にエラー文字を表示
25
+
26
+
27
+ 2. [見積り]のボタンを押すと、value="on"の追加
28
+ 見積りボタンを押すとjavascriptの36行目からの操作で
29
+ `<input class="push" type="hidden" name="swich" value=""></input>`
30
+ が追加される。
31
+
32
+ 3. 内容確認ボタンを押すが追加したフラグが反映されない。
33
+ 内容確認(フォーム送信submit)ボタンを押してもname="swich"のvalueが更新されず空白のままです。
34
+
35
+ **==================================**
36
+ **↑↑ 3. の内容確認ボタンを押したときにname="swich"のvalueが変わってほしいです。**
37
+
19
38
  お詳しい方にアドバイスを頂きたく投稿させていただきました。
20
39
 
21
40
  よろしくお願いいたします。
@@ -24,7 +43,8 @@
24
43
 
25
44
  ```php
26
45
  <?php
27
- //var_dump($_POST);
46
+ var_dump($_POST);
47
+
28
48
  // 変数の初期化
29
49
  $page_flag = 0;
30
50
 
@@ -34,7 +54,7 @@
34
54
  $page_flag = 2;
35
55
  }
36
56
 
37
- // echo $page_flag;
57
+ echo $page_flag;
38
58
  ?>
39
59
 
40
60
  <?php if( $page_flag === 1 ): ?>
@@ -45,12 +65,15 @@
45
65
  <meta charset=shift_jis">
46
66
  <title>フォームテスト</title>
47
67
  </head>
68
+
48
69
  <body>
49
70
  <p>内容確認</p>
50
- <p>10,000</p>
71
+ <p>\10,000</p>
51
72
  <p>これでいいですか??</p>
52
73
  </body>
74
+
53
75
  <?php else: ?>
76
+
54
77
 
55
78
  <!DOCTYOE html>
56
79
  <html lang="ja">
@@ -58,19 +81,16 @@
58
81
  <meta charset=shift_jis">
59
82
  <title>フォームテスト</title>
60
83
  <script type="text/javascript" src="modules/js/jquery.min.js"></script>
61
- <script type="text/javascript" src="jsfile/test.js"></script>
84
+ <script type="text/javascript" src="jsfile/test2.js"></script>
62
- <link rel="stylesheet" href="cssfile/test.css">
85
+ <link rel="stylesheet" href="css/test.css">
63
86
 
64
87
  </head>
65
88
 
66
89
  <body>
67
- <form name="myForm" class="validationForm" method="post" action="" novalidate>
90
+ <form name="myForm" class="btn_push" method="post" action="" novalidate>
68
- <div>
69
- <label for="name">名前 </label>
70
- <input class="required" type="text" name="name" id="name">
91
+ <input class="push" type="hidden" name="swich" value=""></input>
71
- </div>
72
-
73
92
  <input type="button" value="見積り">
93
+ <div id="swich"></div>
74
94
  <div id="output_message"></div>
75
95
  <button name="registration" value="内容確認">内容確認</button>
76
96
  <button onClick="JavaScript:history.back()">もどる</button>
@@ -82,10 +102,11 @@
82
102
 
83
103
  ```javascript
84
104
  document.addEventListener('DOMContentLoaded', () => {
85
- const validationForm = document.querySelector('.validationForm');
105
+ const btn_push = document.querySelector('.btn_push');
86
- if(validationForm) {
106
+ if(btn_push) {
87
107
  const errorClassName = 'error';
88
- const requiredElems = document.querySelectorAll('.required');
108
+ const pushElems = document.querySelectorAll('.push');
109
+
89
110
  const createError = (elem, errorMessage) => {
90
111
  const errorSpan = document.createElement('span');
91
112
  errorSpan.classList.add(errorClassName);
@@ -93,29 +114,34 @@
93
114
  errorSpan.textContent = errorMessage;
94
115
  elem.parentNode.appendChild(errorSpan);
95
116
  }
117
+ console.log(pushElems);
96
118
 
97
- validationForm.addEventListener('submit', (e) => {
119
+ btn_push.addEventListener('submit', (e) => {
98
- const errorElems = validationForm.querySelectorAll('.' + errorClassName);
120
+ const errorElems = btn_push.querySelectorAll('.' + errorClassName);
121
+ console.log(errorElems);
122
+ console.log(pushElems);
123
+
99
124
  errorElems.forEach( (elem) => {
100
125
  elem.remove();
101
126
  });
102
-
103
- requiredElems.forEach( (elem) => {
127
+ pushElems.forEach( (elem) => {
128
+ console.log(elem);
104
129
  const elemValue = elem.value.trim();
105
130
  if(elemValue.length === 0) {
106
131
  createError(elem, '必須です');
107
132
  e.preventDefault();
108
133
  }
109
134
  });
110
- document.myForm.action = "";
111
135
  });
112
136
  }
113
137
  });
114
138
 
115
139
  $(document).ready(function () {
116
140
  $("input:button").click(function(){
141
+ swich = "<input class=\"push\" type=\"text\" name=\"swich\" value=\"on\"></input>";
117
- input_message = "見積りしました。<br> 10,000 円<br>になります";
142
+ input_message = "見積りしました。<br> \\10,000<br>になります";
118
143
  document.getElementById("output_message").innerHTML = input_message;
144
+ document.getElementById("swich").innerHTML = swich;
119
145
  });
120
146
  });
121
147
  ```