Проверка внешнего интерфейса для требуемого поля, обусловленная значением переключателя

#laravel #laravel-blade

#laravel #laravel-blade

Вопрос:

У меня есть блейд-форма Laravel, в которой я делаю поля обязательными следующим образом:

 <input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}" required autocomplete="name" autofocus>

                            @error('name')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
  

Это работает, и когда я пытаюсь отправить форму без name значения, я получаю эту ошибку:

введите описание изображения здесь

Но теперь у меня есть переключатель и другое поле, вызываемое postal_code :

 <input type="radio" name="billing_type" class="billing_type" value="paypal" checked /> PayPal
<input type="radio" name="billing_type" class="billing_type" value="card" /> Credit Card

<input type="text" class="form-control" name="postal_code" value="{{ old('postal_code') }}" placeholder="" />
  

Как мне сделать postal_code поле обязательным, но только если для переключателя установлено значение card ?

Я могу обработать проверку в фоновом режиме, но я хочу, чтобы проверка внешнего интерфейса выполнялась в блейде, как у меня для name поля выше.

Ответ №1:

Вы можете сделать это с помощью jquery, добавив атрибут, требуемый, если значение является карточкой. в противном случае удалите его.

 $('.billing_type').change(function() {
    var type = $(this).val();
    if(type == 'card'){
        $('.postal_code').attr("required","required");
    }else{
        $('.postal_code').removeAttr("required");
    }
});