main.php 一部
1<fieldset id ="Apple"> 2<?php echo $this->element('Apple'); ?> 3</fieldset> 4<fieldset id ="Orange"> 5<?php echo $this->element('Orange'); ?> 6</fieldset>
main.php
1 //初期表示でnone 2 document.getElementById('Apple').style.display = "none"; 3 document.getElementById('Orange').style.display = "none"; 4if (条件) { 5 document.getElementById('Apple').style.display = ""; 6 document.getElementById('Orange').style.display = "none"; 7 } else { 8 document.getElementById('Apple').style.display = "none"; 9 document.getElementById('Orange').style.display = ""; 10 } 11・ 12・ 13・ 14//noneにしたものをfieldsetごとdisableに。初期表示はどちらもdisable 15let AppleformElements = document.forms.apple; 16let OrangeformElements = document.forms.orange; 17 18AppleformElements.submit_id.disabled = true; 19OrangeformElements.submit_id.disabled = true; 20 21...etc
こんな感じで実装しています。
この下にbuttonを設置し、noneで表示されていないかつdisableのフォームをpostしようとしています。
しかし、バリデーションをかけNGになり、main.phpが再表示される時、
再びどちらのフォームもnoneになり、せっかく条件を元に表示させたformが見えなくなります。
やりたいこと:
postされた時点でstyle=""となっているstyleを、post中のバリデーションがNGになり、再びmain.phpが表示された時にstyle =""としたものをそのままにしたい。
試したこと:
バリデーションがNGの場合、$this->request->dataに対して専用の配列を追加し、それをviewに渡してその配列の有無で判定...とか考えたんですがいかがでしょうか?
それもjsで判定する必要がありそうですが、書き方というか、考え方というかいいのがあれば指南しただけないでしょうか?