JavaScript: quiero verificar si la entrada del usuario cumple con 3 condiciones en una declaración if. No sé cómo hacer && y | trabajar en una sola sentencia if. tengo el | después de la primera condición, pero el && no se tiene en cuenta y puedo dejar el cuadro de entrada vacío y aún así me redirigirá a la página. Probé de varias maneras pero no conseguí que funcionara. Por favor ayuda y gracias de antemano.
JavaScript
function valForm() { var firstVal = document.getElementById("nextId").value; var secondVal = document.getElementById("licenseId").value; if ( (firstVal == "MB3804") | (firstVal == "mb3804") && (secondVal.length == 6) | 7 ) { window.location.href = "google.com"; } }HTML
<input type="text" placeholder="License Plate" id="licensed" autocomplete="off" /> <input type="text" placeholder="Ticket ID" id="nextId" autocomplete="off" /> <button class="btn btn-primary display-4" type="button" onclick="valForm()">next</button>if ( (firstVal == "MB3804") | (firstVal == "mb3804") && (secondVal.length == 6) | 7 )probablemente debería ser
if ( (firstVal === "MB3804" || firstVal == "mb3804") && (secondVal.length === 6 || secondVal.length === 7) )Hay algunas cosas que notar aquí:
=== en lugar de == : consulte https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness|| ( el OR lógico ) en lugar de | ( el OR bit a bit ) El comentario anterior de paulsm también es bastante válido y podría usar una comparación de cadenas que no distingue entre mayúsculas y minúsculas en lugar de 2 comparaciones separadas si eso tiene sentido en su caso. Por supuesto, si desea que la condición tenga éxito para MB3804 y mb3804 pero falle para Mb3804 y mB3804 , entonces la comparación de cadenas que no distingue entre mayúsculas y minúsculas no será apropiada, pero si los cuatro casos se consideran "buenos", entonces tiene mucho sentido y
if (firstVal === "MB3804" || firstVal === "mb3804") {...}podría reescribirse como
if (firstVal.toLowerCase() === "mb3804") {...}