Como fazer um simples validação com Javascript e Bootstrap 5


Veja como fazer um simples validação com Javascript e Bootstrap 5.

Lembre-se de que uma validação do lado do servidor é sempre recomendada. Validações do lado do cliente servem para melhorar a experiência do usuário, impede que um fomrulário inválido seja enviado sem necessidade.

Créditos https://www.youtube.com/@maroquio



Código testado.

<div class="row">
 <div class="col-12">
 <div id="error_log_formulario_x" class="alert alert-danger d-none"></div>
 <form id="formulario_x" action="salvar.php" method="post" class="">

 <label for="titulo">Título</label>
 <input validate oninput="valida(this);" id="titulo" value="" type="text" name="titulo" class="form-control form-control-sm" placeholder="Informe o título do produto">

 <label for="descricao">Descrição</label>
 <textarea validate oninput="valida(this);" id="descricao" name="descricao" placeholder="Informe descrição" rows="3" tabindex="2" class="form-control"></textarea>

 <label for="selecionar">Opções*</label>
 <select class="form-control" validate onchange="valida(this)" name="selecionar" id="selecionar">
 <option value=""> (Selecione um item) </option>
 <option value="2"> 002 </option>
 <option value="3"> 003 </option>
 </select>

 <a onclick="validaSubmit('formulario_x');" class="btn btn-info mt-2 ">Salvar</a>

 </form>

 </div>
 </div>
</div>
<script>

 function validaSubmit(formEl = null) {

 const form = document.getElementById(formEl);
 const erroElement = document.querySelector('#error_log_formulario_x');
 let erros = 0;

 Array.from(form).forEach(function(el, index) {

 if (el.hasAttribute('validate') && el.value == "") {
 erros++;
 addRemoveClass(el, 'is-invalid', 'is-valid');
 } else {
 addRemoveClass(el, 'is-valid', 'is-invalid');
 }

 });

 if (erros == 0 && form) {
 form.submit();
 }

 console.log(erros, (erros == 0 && status == 1), form);

 }

 function addRemoveClass(el, add, remove) {
 el.classList.remove(remove);
 el.classList.add(add);
 }

 function valida(el) {
 console.log(el);
 if (el.hasAttribute('validate') && el.value == "") {
 el.classList.remove('is-valid');
 el.classList.add('is-invalid');
 } else {
 el.classList.add('is-valid');
 el.classList.remove('is-invalid');
 }
 
 }
</script>