Как скрыть или показать textField с помощью checkBox в JavaScript Yii

0

Я активировал свой файл js в своем представлении проекта Yii:

<?php
/* Register javascript */
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/js/showHide.js');
?>

все еще, на мой взгляд, у меня есть checkbox с именем tbo_sk и textField с именем 'nilaiblksk'

<?php echo $form->checkBox($model, 'tbo_sk'); ?>
<div style="display: none"><?php echo $form->textField($model, 'nilaiblksk'); ?></div>

Мой вопрос заключается в том, как мы создаем код javascript в моем файле showHide.js, чтобы показать текстовый экран, когда я проверяю checkbox, иначе не скрывайте textField, если он не установлен?

В моем теге div я использую стиль = "display: none", чтобы скрыть textField.

Заранее спасибо!

Теги:
checkbox
yii

2 ответа

2
Лучший ответ

Лучше дать вашему div идентификатор или класс, а не использовать parent() в jQuery:

<div id="hiddenDiv" style="display: none"><?php echo $form->textField($model, 'nilaiblksk'); ?></div>

<script>
$(document).ready(function(){
    $('#MODELNAME_tbo_sk').change(function(){
        $('#hiddenDiv').toggle(); // or do $('#MODELNAME_nilaiblksk').parent().toggle();
    });
});
</script>
  • 0
    Эй спасибо, работает как шарм! Тогда я думал, что это не работает, пока не понял, что не изменил МОДЕЛЬ! хахах Спасибо tinyByte!
1

Затем в файле вида добавьте следующий код:

Зарегистрируйте функцию jquery на документе, готовом для переключения ввода:

$buttonToggler= <<<JS
    toggleInput=function(src,inputName){
      if(src.checked){
        $(src.form[inputName]).removeProp('disabled');
       }else{
         $(src.form[inputName]).prop('disabled','disabled');
       }
    }
JS;
Yii::app()->clientScript->registerScript('toggleFormInputs',$buttonToggler, CClientScript::POS_READY);

Добавить функцию в событие изменения флажка:

echo $form->checkBox($model,'tbo_sk',
      array('onchange'=>'js:toggleInput(this,"ModelName[nilaiblksk]")'));

echo $form->textField($model,"nilaiblksk");

вы должны заменить фактическое название модели, например "ModelName [nilaiblksk]", например, для модели post это будет "Post [nilaiblksk]", независимо от фактической модели, которую вы используете.

Еще одна вещь: вам нужно изменить функцию toggleInput, например, если вы хотите сделать это только для чтения или добавить remove css class

  • 0
    Я обнаружил ошибку в последней строке js: Yii :: app () -> clientScript-> registerScript ('toggleFormInputs', $ buttonToggler, CClientScript :: POS_READY); Разве это не должно быть размещено в файле просмотра?
  • 0
    Весь приведенный выше код попадет в файл представления, просто разделив блоки кода, чтобы было понятно
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню