Soy un estudiante principiante de JS e intento hacer alguna validación de formulario y estoy luchando con eso. Actualmente sufro de covid, por lo que es posible que mi cerebro no esté funcionando y pensando correctamente, pero necesito ayuda.
Básicamente, lo que estoy tratando de probar es que el campo "nombre" de mi formulario no está en blanco Y que no se ha ingresado un número. Puedo hacer que la parte en blanco verifique bien, pero la parte numérica me está desconcertando. Aquí está el código con el que estoy trabajando.
function validateForm() { let x = document.forms["contact_form"]["myName"].value; if ((x == "") && (typeof x == 'number')) { alert("Name must be filled out properly."); return false; } }Siguiendo las sugerencias... Parece que no estoy accediendo correctamente a los datos del formulario. Aquí están los datos del formulario al que intento acceder:
<form class="contact_form" method="put" action="confirmation.html"> <label for="myName">Name:</label> <input type="text" name="myName" id="myName" required />¡Gracias por cualquier ayuda!
Dado que está utilizando && , se garantiza que la condición evaluará false . Debe usar el operador OR ( || ) aquí.
Además, el tipo del valor de x siempre es una cadena, debe convertir el valor en un número antes de la comparación, puede hacerlo agregando el prefijo + a la variable:
if ((x == "") || (typeof +x == 'number')) { Sin embargo, te sugiero que uses isNaN()
if ((x == "") || !isNaN(x)) {Manifestación:
function validateForm() { let x = document.forms["contact_form"]["myName"].value; if ((x == "") || !isNaN(x)) { alert("Name must be filled out properly."); return false; } } <form name="contact_form"> <input name="myName"> <button onclick="return validateForm()">Click</button> </form>