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>

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)}' ] ,

Надеюсь, это поможет вам

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]