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

回答編集履歴

5

調整

2018/11/27 07:34

投稿

yambejp
yambejp

スコア117902

answer CHANGED
@@ -162,8 +162,14 @@
162
162
  <input type="submit" value="go">
163
163
  </form>
164
164
  <?php
165
- foreach($error as $key=>$val){
165
+ foreach($checked as $key=>$val){
166
+ print $key.")".$val.":";
167
+ if(isset($error[$key])){
166
- print $key.":".$val."[".htmlspecialchars($number[$key])."]<br>";
168
+ print $error[$key]."[".htmlspecialchars(@$number[$key])."]<br>";
169
+ }else{
170
+ print "[".htmlspecialchars(@$number[$key])."]<br>";
171
+ }
167
172
  }
168
173
  ?>
174
+
169
175
  ```

4

調整

2018/11/27 07:34

投稿

yambejp
yambejp

スコア117902

answer CHANGED
@@ -84,7 +84,86 @@
84
84
 
85
85
  # errorをまとめて表記
86
86
  ```PHP
87
+ <?PHP
88
+ $checked=filter_input(INPUT_POST,"checked",FILTER_DEFAULT,["options"=>["default"=>[]],"flags"=>FILTER_REQUIRE_ARRAY]);
89
+ $number=filter_input(INPUT_POST,"number",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
90
+ $error=[];
91
+ foreach(array_keys($checked) as $key){
92
+ if(!isset($number[$key]) or (int)$number[$key]===0){
93
+ $error[$key]="<span style='color:red'>数書け!!</span>";
94
+ }
95
+ };
96
+ ?>
97
+ <script>
98
+ HTMLElement.prototype.trigger=function(eventStr){
99
+ if (document.createEvent) {
100
+ var e = document.createEvent("HTMLEvents");
101
+ e.initEvent(eventStr, true, true );
102
+ return this.dispatchEvent(e);
103
+ } else {
104
+ var e = document.createEventObject();
105
+ return this.fireEvent("on"+eventStr, e);
106
+ }
107
+ };
108
+ window.addEventListener('DOMContentLoaded', function(e){
109
+ [].forEach.call(document.querySelectorAll('.checkbox_input_1'),function(x){
110
+ x.addEventListener('change',function(e){
111
+ document.querySelector('[name="'+x.dataset["target"]+'"]').disabled=!e.target.checked;
112
+ });
113
+ x.trigger('change');
114
+ });
115
+ });
116
+ </script>
117
+ <form method="post">
118
+ <p class="part_1">
119
+ <label class="checkbox_text">
120
+ <input class="checkbox_input_1" type="checkbox" name="checked[0]" data-target="number[0]" value="カタログ一式(総合カタログ+製品カタログ全種)">
121
+ <span class="checkbox_parts_1">カタログ一式(総合カタログ+製品カタログ全種)</span>
122
+ </label>
123
+ </p>
124
+ <div class="cArea_2">
125
+ <p class="part_2">
126
+ <input name="number[0]" value="" maxlength="3" type="text" disabled required> 部
127
+ </p>
128
+ </div>
129
+ <p class="part_1">
130
+ <label class="checkbox_text">
131
+ <input class="checkbox_input_1" type="checkbox" name="checked[1]" data-target="number[1]" value="総合カタログ">
132
+ <span class="checkbox_parts_1">総合カタログ</span>
133
+ </label>
134
+ </p>
135
+ <div class="cArea_2">
136
+ <p class="part_2">
137
+ <input name="number[1]" value="" maxlength="3" type="text" disabled required> 部
138
+ </p>
139
+ </div>
140
+ <p class="part_1">
141
+ <label class="checkbox_text">
142
+ <input class="checkbox_input_1" type="checkbox" name="checked[2]" data-target="number[2]" value="製品1">
143
+ <span class="checkbox_parts_1">製品1</span>
144
+ </label>
145
+ </p>
146
+ <div class="cArea_2">
147
+ <p class="part_2">
148
+ <input name="number[2]" value="" maxlength="3" type="text" disabled required> 部
149
+ </p>
150
+ </div>
151
+ <p class="part_1">
152
+ <label class="checkbox_text">
153
+ <input class="checkbox_input_1" type="checkbox" name="checked[3]" data-target="number[3]" value="製品2">
154
+ <span class="checkbox_parts_1">製品2</span>
155
+ </label>
156
+ </p>
157
+ <div class="cArea_2">
158
+ <p class="part_2">
159
+ <input name="number[3]" value="" maxlength="3" type="text" disabled required> 部
160
+ </p>
161
+ </div>
162
+ <input type="submit" value="go">
163
+ </form>
164
+ <?php
87
165
  foreach($error as $key=>$val){
88
- print $key.":".$val."<br>";
166
+ print $key.":".$val."[".htmlspecialchars($number[$key])."]<br>";
89
167
  }
168
+ ?>
90
169
  ```

3

調整

2018/11/27 07:27

投稿

yambejp
yambejp

スコア117902

answer CHANGED
@@ -33,7 +33,6 @@
33
33
  });
34
34
  </script>
35
35
  <form method="post">
36
- <label>
37
36
  <p class="part_1">
38
37
  <label class="checkbox_text">
39
38
  <input class="checkbox_input_1" type="checkbox" name="checked[0]" data-target="number[0]" value="カタログ一式(総合カタログ+製品カタログ全種)">
@@ -44,9 +43,7 @@
44
43
  <p class="part_2">
45
44
  <input name="number[0]" value="" maxlength="3" type="text" disabled required> 部
46
45
  </p>
47
- <?php
46
+ </div>
48
- print isset($error[0])?$error[0]:"";
49
- ?>
50
47
  <p class="part_1">
51
48
  <label class="checkbox_text">
52
49
  <input class="checkbox_input_1" type="checkbox" name="checked[1]" data-target="number[1]" value="総合カタログ">
@@ -57,9 +54,7 @@
57
54
  <p class="part_2">
58
55
  <input name="number[1]" value="" maxlength="3" type="text" disabled required> 部
59
56
  </p>
60
- <?php
57
+ </div>
61
- print isset($error[1])?$error[1]:"";
62
- ?>
63
58
  <p class="part_1">
64
59
  <label class="checkbox_text">
65
60
  <input class="checkbox_input_1" type="checkbox" name="checked[2]" data-target="number[2]" value="製品1">
@@ -70,9 +65,7 @@
70
65
  <p class="part_2">
71
66
  <input name="number[2]" value="" maxlength="3" type="text" disabled required> 部
72
67
  </p>
73
- <?php
68
+ </div>
74
- print isset($error[2])?$error[2]:"";
75
- ?>
76
69
  <p class="part_1">
77
70
  <label class="checkbox_text">
78
71
  <input class="checkbox_input_1" type="checkbox" name="checked[3]" data-target="number[3]" value="製品2">
@@ -83,9 +76,15 @@
83
76
  <p class="part_2">
84
77
  <input name="number[3]" value="" maxlength="3" type="text" disabled required> 部
85
78
  </p>
86
- <?php
79
+ </div>
87
- print isset($error[3])?$error[3]:"";
88
- ?>
89
80
  <input type="submit" value="go">
90
81
  </form>
82
+
83
+ ```
84
+
85
+ # errorをまとめて表記
86
+ ```PHP
87
+ foreach($error as $key=>$val){
88
+ print $key.":".$val."<br>";
89
+ }
91
90
  ```

2

調整

2018/11/27 07:20

投稿

yambejp
yambejp

スコア117902

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  こんな感じで
2
-
2
+ JSの初期処理を追加
3
3
  ```PHP
4
4
  <?PHP
5
5
  //修正:$checked=filter_input(INPUT_POST,"checked",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
@@ -13,11 +13,22 @@
13
13
  };
14
14
  ?>
15
15
  <script>
16
+ HTMLElement.prototype.trigger=function(eventStr){
17
+ if (document.createEvent) {
18
+ var e = document.createEvent("HTMLEvents");
19
+ e.initEvent(eventStr, true, true );
20
+ return this.dispatchEvent(e);
21
+ } else {
22
+ var e = document.createEventObject();
23
+ return this.fireEvent("on"+eventStr, e);
24
+ }
25
+ };
16
26
  window.addEventListener('DOMContentLoaded', function(e){
17
27
  [].forEach.call(document.querySelectorAll('.checkbox_input_1'),function(x){
18
28
  x.addEventListener('change',function(e){
19
29
  document.querySelector('[name="'+x.dataset["target"]+'"]').disabled=!e.target.checked;
20
30
  });
31
+ x.trigger('change');
21
32
  });
22
33
  });
23
34
  </script>

1

調整

2018/11/27 05:49

投稿

yambejp
yambejp

スコア117902

answer CHANGED
@@ -2,7 +2,8 @@
2
2
 
3
3
  ```PHP
4
4
  <?PHP
5
- $checked=filter_input(INPUT_POST,"checked",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
5
+ //修正:$checked=filter_input(INPUT_POST,"checked",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
6
+ $checked=filter_input(INPUT_POST,"checked",FILTER_DEFAULT,["options"=>["default"=>[]],"flags"=>FILTER_REQUIRE_ARRAY]);
6
7
  $number=filter_input(INPUT_POST,"number",FILTER_VALIDATE_INT,FILTER_REQUIRE_ARRAY);
7
8
  $error=[];
8
9
  foreach(array_keys($checked) as $key){