!
, ; JavaScript ( , ), , , .
. onload :
<script type="text/javascript">
window.onload = function() {
toggle_setup(document.getElementById('ClientTv'), 'tvPrice', false)
toggle_required(document.getElementById('ClientTv'), "ClientTvPrice")
}
</script>
, . !
, , , div , toggle_setup, div . div 'tvPrice'
<?php echo $this->Form->input('Client.tv', array('label'=>'Purchasing TV? <small>(Check if Yes)</small>', 'onclick'=>'toggle_setup(this, "tvPrice", "TV pricing");toggle_required(this, "ClientTvPrice")'));
echo $this->Form->input('Client.tv_price', array('label'=>'Enter TV Price','div'=>array('class'=>'hidden', 'id'=>'tvPrice')));
?>
JavaScript:
function toggle_required(element, id) {
var object = document.getElementById(id)
if(element.checked) {
object.setAttribute( 'required', "required")
} else {
object.removeAttribute('required')
}
}
function toggle_setup(element, div, human_term) {
if(element.checked) {
document.getElementById(div).style.display='block'
} else {
if(!human_term) {
clearChildren(document.getElementById(''+div))
document.getElementById(div).style.display='none'
} else {
if(confirm('Are you sure you want to clear the client\ '+human_term+' settings?')) {
clearChildren(document.getElementById(div))
document.getElementById(div).style.display='none'
} else {
element.checked = true
}
}
}
}
function clearChildren(element) {
for (var i = 0; i < element.childNodes.length; i++) {
var e = element.childNodes[i];
if (e.tagName) switch (e.tagName.toLowerCase()) {
case 'input':
switch (e.type) {
case "radio":
case "checkbox": e.checked = false; break;
case "button":
case "submit":
case "image": break;
default: e.value = ''; break;
}
break;
case 'select': e.selectedIndex = 0; break;
case 'textarea': e.innerHTML = ''; e.value=""; break;
default: clearChildren(e);
}
}
}
CSS, "", :
.hidden {
display: none;
}
In the above suggestions, I have added lines to 'required'=>falseboth 'allowEmpty'=>truemy validation array and it seems to work.
Thanks for the help!