少しややこしいんですが、ある条件の時だけJavaScriptが動作しません。
条件とは、
cakePHPのForm->create()でフォーム(method="POST"で)作成した時だけなんです。
JavaScriptはグループ内のチェックボックスをチェックする動作です。
パターンをまとめると以下になります。
・<form method="GET" >もしくは<form method="POST" >を直書きすると両方問題なし。
・cakePHPのForm->create()にて<form method="GET" >を作成。問題なし。
・cakePHPのForm->create()にて<form method="POST" >を作成。スクリプトが動作しない。
デバッグすると、スクリプト内には飛んでいました。
どうしてPOSTの時だけスクリプトが動作しないんでしょうか・・・・?
php
1 //↓は問題なし 2 <form action="/xxx" method="GET" accept-charset="utf-8"> 3 4 //↓も問題なし 5 <?php echo $this->Form->create('xxx', array('controller'=>'yyy', 'action' => 'index', 'type' => 'GET')); ?> 6 7 //↓だと動作しない 8 <?php echo $this->Form->create('xxx', array('controller'=>'yyy', 'action' => 'index', 'type' => 'POST')); ?> 9 10 11 <p><input type="checkbox" onClick="onGroupClick()" name="a" />果物</p> 12 <div> 13 <p><input type="checkbox" value="a"/>りんご</p> 14 <p><input type="checkbox" value="g"/>みかん</p> 15 <p><input type="checkbox" value="b"/>バナナ</p> 16 </div> 17 18 <p><input type="checkbox" onClick="onGroupClick()" name="b"/>野菜</p> 19 20 21 22 <input type="submit" value="送信"/> 23 24 </form> 25
JavaScript
1function onGroupClick() 2{ 3 4 Form = document.getElementsByTagName('form')[0]; 5 P = Form.getElementsByTagName('p'); 6 DIV = Form.getElementsByTagName('div'); 7 8 //全てのpタグ 9 for(i=0;i<P.length;i++) 10 { 11 12 //先頭を取得 13 Pinput = P[i].getElementsByTagName('input')[0]; 14 15 //divで囲まれたグループを取得 16 DIVinput = DIV[i].getElementsByTagName('input'); 17 18 //全て先頭の値に合わせる 19 if(Pinput.checked) 20 { 21 for(k=0;k<DIVinput.length;k++) 22 { 23 DIVinput[k].checked=true; 24 25 } 26 } 27 else 28 { 29 for(k=0;k<DIVinput.length;k++) 30 { 31 DIVinput[k].checked=false; 32 } 33 } 34 } 35 36}
回答1件
あなたの回答
tips
プレビュー