Javascript jQuery-复选框启用/禁用-带DB
我想实现这个问题的解决方案:在yii2中,只是反转并与DB结合。反向意味着:我有一些复选框,如果选中了Javascript jQuery-复选框启用/禁用-带DB,javascript,jquery,yii2,Javascript,Jquery,Yii2,我想实现这个问题的解决方案:在yii2中,只是反转并与DB结合。反向意味着:我有一些复选框,如果选中了irep复选框,则应禁用所有其他复选框,否则应启用它们。所以我交换了$(“input.irep”).attr(“disabled”,true)和$(“input.irep”).removeAttr(“禁用”) irep存储在db中(作为bool/tinyint值1),如果我打开表单,应该禁用的字段仍将被启用,即使我向其中添加'disabled'=>$model->irep。如果我删除了else,
irep
复选框,则应禁用所有其他复选框,否则应启用它们。所以我交换了$(“input.irep”).attr(“disabled”,true)
和$(“input.irep”).removeAttr(“禁用”)代码>
irep
存储在db中(作为bool/tinyint值1),如果我打开表单,应该禁用的字段仍将被启用,即使我向其中添加'disabled'=>$model->irep
。如果我删除了else,几乎可以,但是取消选中不会重新启用其他复选框。你能给我指一下正确的方向吗?多谢各位
表格:
$script=
使用.prop
而不是.attr
查看原因
仅当$model->irep
是1
时添加disabled
属性。您添加属性的方式值无关紧要,属性应该在那里,或者不应该在那里。值中的1
或0
使用disabled
不会有任何效果,只会是相同的
那么为什么要在加载脚本的开头调用enable_cb()
,您正在将此函数用于#irep
上的单击事件。函数内的复选框为this。选中的对页面加载没有影响,对该函数的独立调用将使this
指向窗口
对象,而不是复选框
并避免使用。单击,选择。在('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 =>'']) ?>
$script=irep?'disabled':'';
勾选
和取消勾选
复选框是另一回事,禁用输入是另一回事,添加代码以显示实际操作,除了使用activeCheckboxList将复选框设置为正确值之外,您无需做任何其他事情。我不希望其他复选框被选中ecked或UNCHECK,只是要启用或禁用。情况是一样的:第二次intfg
和extfg
被禁用,但之后它们被切换回自动启用。必须附加一些其他脚本。我在一个单独的视图中仅使用上述代码对其进行了测试,它工作正常,您使用了吗e答案中有相同的代码,没有额外的代码。现在我明白了,请添加您的完整视图@user2511599您已删除enable_cb();
!:)。现在它开始工作了。非常感谢你!它的工作原理也是这样的:'disabled'=>$model->irep
所以你不需要$disabled=$model->irep吗残疾人士':''
您不应该执行'disabled'=>$model->irep
这在逻辑上是错误的,正如我在回答中已经解释的,请阅读@user2511599的回答
$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 =>'']) ?>