Показать сообщение отдельно
  #1 (permalink)  
Старый 22.04.2014, 08:53
Новичок на форуме
Отправить личное сообщение для decd Посмотреть профиль Найти все сообщения от decd
 
Регистрация: 22.04.2014
Сообщений: 5

Если выбран radiobutton "Другое" - появление нового текстового поля
Здравствуйте, надеюсь на Вашу помощь, ибо сильно поджимают сроки.
Вопрос завязан на незнании возможностей 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, разумеется).

Буду рад услышать Ваши предложения, спасибо!
Ответить с цитированием