Я предлагаю поместить все ваши возрасты в массив и передать этот массив для просмотра:
$ages = ['18-25','25-50','50-75','75+']; // More dynamic and you can extend in anytime
Теперь изменения в html:
<div class="input--select">
<label>Age Range <span>*</span></label>
<select name="age_range" class="age-range" value="{{old('age_range')}}" required>
// 1. first change which is creating your problem
<option {{ old('age_range') ? "" : "selected" }} disabled>Select your age range</option>
// 2. This is just optimization for short code
@foreach($ages as $age)
<option {{old('age_range') ==$age" ? $selected : ""}} value="{{$age}}">{{$age}}</option>
@endforeach
</select>
@if ($errors->has('age_range')) <span class="error-message">Age range option is required.</span> @endif
</div>
Итак, в пункте 1 вы всегда применяетеselected
с первым параметром.
Предположим, что ваше старое значение было 46-55
ваш HTML выглядит так:
<select name="age_range" class="age-range" value="{{old('age_range')}}" required>
<option selected disabled>Select your age range</option>
<option value="18-25">18-25</option>
<option value="26-35">26-35</option>
<option value="36-45">36-45</option>
<option selected value="46-55">46-55</option>
<option value="56-65">56-65</option>
<option value="66-75">66-75</option>
<option value="75+">75+</option>
</select>
, если вы посмотрите выше HTMLЕсть 2 выбранных варианта.Html всегда выбирает первое, именно это создает проблему.
Пункт 1. проверит, доступно ли старое значение, не применяет selected
к первому параметру-заполнителю.