Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/07/2021, 19:00
prueba230683
 
Fecha de Ingreso: abril-2011
Mensajes: 170
Antigüedad: 13 años, 7 meses
Puntos: 68
Respuesta: No me ejecuta el POST

Tienes dos errores bastante sutiles, sobre todo el segundo.

1) La variable entrar no la estás declarando en ningún lugar. Debes declarar la variable entrar localmente (es decir, dentro de la función) e iniciarla a false. De esta forma, cada vez que se dispare el evento submit del formulario, la variable comenzará en false y cambiará a true si se cumple alguna de esas dos condiciones.

2) Las Arrow Functions de ES6 no son solamente una abreviación de las funciones normales, tienen algunas peculiaridades más, como por ejemplo, utilizan el this léxico. Aquí hay una explicación a fondo. La solución es usar funciones normales en este caso.

El código corregido resulta:

Código Javascript:
Ver original
  1. const nombre = document.getElementById("name")
  2. const cldne = document.getElementById("cldne")
  3. const form = document.getElementById("form")
  4. const parrafo = document.getElementById("warnings")
  5.  
  6. form.addEventListener("submit", function(e){
  7.   var entrar = false; // declarar e inicializar variable
  8.  
  9.   e.preventDefault()
  10.   let warnings = ""
  11.   parrafo.innerHTML = ""
  12.   if(nombre.value.length < 4){
  13.  
  14.     warnings +=`El nombre es muy corto <br>`
  15.     entrar= true
  16.   }
  17.  
  18.   if(cldne.value.length < 8){
  19.     warnings +=`El nombre es muy corto <br>`
  20.     entrar= true
  21.   }
  22.   if(entrar){
  23.     parrafo.innerHTML= warnings
  24.   }else{
  25.     this.submit();
  26.   }
  27.  
  28. })