<div>
<input />
<div>Текст выбранный</div>
<div class="list">
<div>1 значение</div>
<div>2 значение</div>
<div>3 значение</div>
</div>
</div>option.addEventListener("click",function(e){
input.value = option.dataset.val;
} const select =...
const hiddenInput = ...
Как я понимаю это теперь браузеры начали поддерживать внутреннюю валидацию. И она блокирует отправку невалидных форм, причем неважно по аяксу вызываю submit или по кнопке