我有一个textInput 字段,但是当按下复选框时,不需要该字段。
WrapperMeta.__getattr__
我需要在用户选中复选框时删除必需的属性。我认为jQuery是最好的方法,所以我尝试了这个但它不起作用:
<div class="checkbox">
<label>
<?= Html::checkbox('myCheckbox', false, ['id' => 'myCheckbox']) ?>
I don't send my address
</label>
</div>
<?= $form->field($model, 'address')->textInput(['class' => 'form-control', 'id' => 'address']) ?>
我可以看到必需属性不在输入标记上,它在父标记中:
$("#myCheckbox").change(function() {
if (this.checked) {
$("#address").prop("required", "false");
}
else {
$("#address").prop("required", "true");
}
});
答案 0 :(得分:0)
为什么不使用when
和whenClient
选项?将复选框更改为模型字段,声明名为myCheckbox
public $myCheckbox
在Form
模型中,然后更改以下内容。
<div class="checkbox">
<label>
<?= Html::checkbox('myCheckbox', false, ['id' => 'myCheckbox']) ?>
I don't send my address
</label>
</div>
到
<div class="checkbox">
<label>
<?= $form->field($model,'myCheckbox')->checkbox(['uncheck'=>null,'id'=>'myCheckbox']) ?>
I don't send my address
</label>
</div>
然后在Form
模型中的规则中执行以下操作
['address' , 'required' , 'when' => function($model) {
return ($model->myCheckbox!==null);
} , 'whenClient' => 'function(attribute,value){return ($("#myCheckbox:checked").length>0)}' ] ,
希望它可以帮助你