Здравствуйте, надеюсь на Вашу помощь, ибо сильно поджимают сроки.
Вопрос завязан на незнании возможностей javascript. Уверен, задача тривиальная. Пытаюсь использовать готовые решения.
У меня есть:
<?php echo $form->radioButtonList($model,'company_type_of_ownership',array(
"Private company"=>"Private company",
"Other"=>"Other (please, specify)"),array('separator' => "",'onchange'=>'return ownership(this.value)')); ?>
И:
<div id="check_1" style="display:none">
<div class="row">
<?php echo $form->labelEx($model,'company_type_of_ownership_other'); ?>
<?php echo $form->textField($model,'company_type_of_ownership_other',array('size'=>50,'maxlength'=>50)); ?>
<div class="app_tip"></div>
<?php echo $form->error($model,'company_type_of_ownership_other'); ?>
</div>
</div>
И наконец:
function ownership(obj){
if(obj=="Other"){
document.getElementById('check_1').style.display="block";
return false;
}else{
document.getElementById('check_1').style.display="none";
return false;
}
}
function legalForm(obj){
if(obj=="Other"){
document.getElementById('check_2').style.display="block";
return false;
}else{
document.getElementById('check_2').style.display="none";
return false;
}
}
function learnFrom(obj){
if(obj=="Other"){
document.getElementById('check_4').style.display="block";
return false;
}else{
document.getElementById('check_4').style.display="none";
return false;
}
}
(Несколько одинаковых скриптов, потому что имеется несколько таких полей для разных вопросов).
Все работает отлично, при выборе "Other", появляется скрытый hidden див и пользователь может ввести свое значение.
Проблема возникает тогда, когда пользователь выбирает "Other", но забывает указать свой вариант при отправке формы. Срабатывают мои правила валидации и он возвращается на ту же страницу. НО.
Радио кнопка "Other" все так же выбрана, однако скрытое поле прячется, я так понимаю из-за ONCHANGE.
Для того чтобы оно появилось и он мог ввести значение, необходимо выбрать какой-нибудь другой вариант (В данном случае 'Private company') и затем снова выбрать 'Other". Тогда поле, разумеется, вновь появится. Но такой подход не очевиден и мало кто догадается совершить такие манипуляции. Как исправить? Наверное, должно быть что-то вроде: 'onchange'||'ifchosen' (только на языке js, разумеется).
Буду рад услышать Ваши предложения, спасибо!