Я просто боролся с тем же.Этот ответ, вероятно, слишком поздно для вас, но, надеюсь, он поможет кому-то еще.Сообщение проверки отображается там, где оно находится, потому что Bootstrap добавляет display: inline-flex;
к родительскому элементу при отображении горизонтальных форм, предотвращая его падение на следующую строку.
Мне удалось переместить сообщение проверки invalid-feedback
вне элемента flex layout и заставить его продолжать реагировать на проверку (без дополнительного javascript), поместив перед ним фиктивную радиокнопку с тем же именем.и скрывая это с помощью CSS.Немного бестолково, но это работает.
<div class="col-sm text-center">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="eye_color_yes" value="yes" name="eye_color" required>
<label class="form-check-label" for="eye_color_yes">Yes</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="eye_color_no" value="no" name="eye_color" required>
<label class="form-check-label" for="eye_color_no">No</label>
</div>
<input type="radio" name="eye_color" style="display:none;" required>
<div class="invalid-feedback">
Please select an option.
</div>
</div>