Используйте .prop
вместо .attr
см. здесь почему
Добавьте атрибут disabled
только в том случае, если $model->irep
равно 1
при добавлении атрибутазначение не имеет значения, либо атрибут должен присутствовать, либо значение 1
или 0
в значении не будет иметь никакого значения, если бы disabled
было бы таким же.
Тогда почему вывызывая enable_cb()
в начале скрипта при загрузке, вы используете эту функцию для события click для #irep
проверка внутри функции, которая является this.checked
, не влияет на загрузку страницы с отдельным вызовомфункция будет иметь this
, указывающую на объект window
вместо флажка.
И избегайте использования .click
и предпочитайте .on('click'
вместо делегирования события.
ваш код долженвыглядеть ниже
$script = <<< JS
$(function(){
$("#irep").on('click',enable_cb);
});
function enable_cb() {
if (this.checked) {
$(".irep").prop("disabled", true);
} else {
$(".irep").prop("disabled",false);
}
}
JS;
$this->registerJs($script);
//add disabled attribute
$disabled = $model->irep ? 'disabled' : '';
<?= $form->field($model, 'irep')->checkbox(['id' => 'irep']) ?>
<?= $form->field($model, 'intfg')->checkbox(['class' => ['irep'], $disabled=>'']) ?>
<?= $form->field($model, 'extfg')->checkbox(['class' => ['irep'], $disabled =>'']) ?>