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

回答編集履歴

2

追記

2017/08/09 03:38

投稿

yambejp
yambejp

スコア117912

answer CHANGED
@@ -50,26 +50,76 @@
50
50
  </div>
51
51
  <input type=submit value=次へ></form>
52
52
  ```
53
+ # 追記
54
+ 念の為hojoの引き継ぎも追記しておきます
53
55
 
54
- # 追記
55
- php側の処理
56
56
  ```PHP
57
57
  $selected=[];
58
+ $list=[
58
- $list_kanjo=["yokin","shomohin","uriage"];
59
+ "kanjo"=>["yokin","shomohin","uriage"],
59
- array_walk($list_kanjo,function($i) use(&$selected){
60
- $selected["kanjo"][$i]="";
60
+ "hojo"=>["A銀行","B銀行","FF","ボトル","文旦","小夏"],
61
- });
61
+ ];
62
+ $vals=[
62
- $val_kanjo=filter_input(INPUT_POST,"kanjo");
63
+ "kanjo"=>filter_input(INPUT_POST,"kanjo"),
64
+ "hojo"=>filter_input(INPUT_POST,"hojo"),
65
+ ];
63
- if(in_array($val_kanjo,$list_kanjo)){
66
+ foreach($list as $key=>$arr){
67
+ foreach($arr as $val){
64
- $selected["kanjo"][$val_kanjo]=" selected";
68
+ $selected[$key][$val]=($val==$vals[$key]?" selected":"");
69
+ }
65
70
  }
66
71
  ```
72
+ javascriptでhojoの送るものを選別
73
+ ```javascript
74
+ NodeList.prototype.hide=function(){
75
+ Array.prototype.map.call(this,function(i){
76
+ i.style.display = 'none';
77
+ i.disabled = true;
78
+ });
79
+ };
67
- 上記を設定した上でkanjoのあたりのHTML部分を以下のようにしてください
80
+ HTMLElement.prototype.show=function(){
81
+ this.style.display = 'inline';
82
+ this.disabled = false;
83
+ };
84
+ window.onload=function(){
85
+ document.querySelector(".kanjo").addEventListener('change',function(e){
86
+ var p=e.target.parentNode;
87
+ p.querySelectorAll(".hojo").hide();
88
+ p.querySelector("#"+e.target.value).show();
89
+ });
90
+ if(document.createEvent){
91
+ var e=document.createEvent('UIEvents');
92
+ e.initEvent("change",true,true);
93
+ }else{
94
+ var e=new Event("change");
95
+ }
96
+ document.querySelector(".kanjo").dispatchEvent(e);
97
+ }
68
98
 
99
+ ```
100
+ 上記を設定した上でHTML部分も調整
101
+
69
102
  ```HTML
103
+ <form method="POST">
104
+ <div class="pulldownset">
70
105
  <select class="kanjo" name="kanjo">
71
106
  <option value="yokin"<?PHP print $selected["kanjo"]["yokin"];?>>預金</option>
72
107
  <option value="shomohin"<?PHP print $selected["kanjo"]["shomohin"];?>>消耗品</option>
73
108
  <option value="uriage"<?PHP print $selected["kanjo"]["uriage"];?>>売上</option>
74
109
  </select>
110
+
111
+ <select id="yokin" class="hojo" name="hojo">
112
+ <option value="A銀行"<?PHP print $selected["hojo"]["A銀行"];?>>A銀行</option>
113
+ <option value="B銀行"<?PHP print $selected["hojo"]["B銀行"];?>>B銀行</option>
114
+ </select>
115
+ <select id="shomohin" class="hojo" name="hojo">
116
+ <option value="FF"<?PHP print $selected["hojo"]["FF"];?>>FF</option>
117
+ <option value="ボトル"<?PHP print $selected["hojo"]["ボトル"];?>>ボトル</option>
118
+ </select>
119
+ <select id="uriage" class="hojo" name="hojo">
120
+ <option value="文旦"<?PHP print $selected["hojo"]["文旦"];?>>文旦</option>
121
+ <option value="小夏"<?PHP print $selected["hojo"]["小夏"];?>>小夏</option></select>
122
+ </div>
123
+ <input type=submit value=次へ></form>
75
- ```
124
+ ```
125
+

1

追記

2017/08/09 03:37

投稿

yambejp
yambejp

スコア117912

answer CHANGED
@@ -49,4 +49,27 @@
49
49
  <option value="小夏">小夏</option></select>
50
50
  </div>
51
51
  <input type=submit value=次へ></form>
52
+ ```
53
+
54
+ # 追記
55
+ php側の処理
56
+ ```PHP
57
+ $selected=[];
58
+ $list_kanjo=["yokin","shomohin","uriage"];
59
+ array_walk($list_kanjo,function($i) use(&$selected){
60
+ $selected["kanjo"][$i]="";
61
+ });
62
+ $val_kanjo=filter_input(INPUT_POST,"kanjo");
63
+ if(in_array($val_kanjo,$list_kanjo)){
64
+ $selected["kanjo"][$val_kanjo]=" selected";
65
+ }
66
+ ```
67
+ 上記を設定した上でkanjoのあたりのHTML部分を以下のようにしてください
68
+
69
+ ```HTML
70
+ <select class="kanjo" name="kanjo">
71
+ <option value="yokin"<?PHP print $selected["kanjo"]["yokin"];?>>預金</option>
72
+ <option value="shomohin"<?PHP print $selected["kanjo"]["shomohin"];?>>消耗品</option>
73
+ <option value="uriage"<?PHP print $selected["kanjo"]["uriage"];?>>売上</option>
74
+ </select>
52
75
  ```