Yii2:如何使用jQuery删除所需的属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yii2:如何使用jQuery删除所需的属性相关的知识,希望对你有一定的参考价值。

我有一个textInput字段是必需的,但是当按下该复选框时,该字段不是必需的。

<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']) ?>

我需要在用户选中复选框时删除所需的属性。我认为jQuery是最好的方法,所以我尝试了这个但它不起作用:

$("#myCheckbox").change(function() {
    if (this.checked) {
        $("#address").prop("required", "false");
    }
    else {
        $("#address").prop("required", "true");
    }
});

我可以看到所需的属性不在输入标记上,它在他的父标记中:

<div class="form-group field-address required has-success">
    <label class="control-label" for="address">Address</label>
    <input type="text" id="address" class="form-control" name="Form[address]" aria-required="true" aria-invalid="false">

    <div class="help-block"></div>
</div>
答案

你为什么不使用whenwhenClient选项?将复选框更改为模型字段,声明名为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)}' ] ,

希望它可以帮助你

以上是关于Yii2:如何使用jQuery删除所需的属性的主要内容,如果未能解决你的问题,请参考以下文章

JQuery Ajax 使用所需的 textarea 完成

我不明白我的 jQuery 代码是如何执行的。如何实现所需的动画? [复制]

jQuery 验证错误放置和所需的文本放置

使用 asp.net core 删除所需的验证

如何更改 jQuery 中的标题属性?

如何使用 jQuery 遍历这个 DOM 并检索所需的文本?