CakePHP: показать / скрыть элемент управления формы на основе статуса флажка - PullRequest
0 голосов
/ 26 марта 2019

У меня есть три элемента управления в форме CakePHP:

echo $this->Form->control('recurring', ['empty' => true]);
echo $this->Form->control('recurring_months', ['options' => $months, 'empty' => true]);
echo $this->Form->control('recurring_start_date', ['empty' => true]);

Я хочу, чтобы поля recurring_months и recurring_start_date были скрыты, если поле recurring не отмечено - true.

Итак, я попытался с этим javascript кодом, но он не работает.Как я могу это исправить?

<script>
    //hide recurring options if its not recurring
    $(document).ready(function() {  
        $('#recurring').on('change', function(e){ 
            if($(this).is(':checked')) { 
                $('#recurring_months').show();
                $('#recurring_start_date').show();
            }
            else{ 
                $('#recurring_months').hide();
                $('#recurring_start_date').hide();
            }
        });
    });
</script>

1 Ответ

2 голосов
/ 26 марта 2019

Как на счет этого, обернуть входные данные в div и скрыть его вместо того, чтобы скрывать поля по отдельности:

echo $this->Form->control('recurring', ['empty' => true]);
echo $this->Html->tag('div',
    $this->Form->control('recurring_months', ['options' => $months, 'empty' => true]) .
    $this->Form->control('recurring_start_date', ['empty' => true]),
    ['id' => 'recurring_fields']
);

<script>
    //hide recurring options if its not recurring
    $(document).ready(function() {  
        $('#recurring').on('change', function(e){ 
            if($(this).is(':checked')) { 
                $('#recurring_fields').show();
            }
            else{ 
                $('#recurring_fields').hide();
            }
        });
    });
</script>
...