Intenté casi 2 noches lograr lo que quería; que cuando pida el nombre, sólo acepte texto; cuando pida la edad, solo acepte números y cuando pida si tiene licencia o no el usuario, solo acepte como respuestas "si", "no" y "claro", tanto en minúsculas como mayúsculas.
Logré los dos primeros (aunque revisándolo, quiero el nombre no acepte números ni al principio, ni en medio, ni al final) pero en licencia no logré del todo lo que quería.
Tengo que investigar más los RegExp, la lógica del "!", etc.
Bueno, poco a poco, pero funciona por el momento. Agradezco sugerencias. Gracias!
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>¿Puedo conducir?</title>
<style>
body {
background-color: #b7ccdf;
}
p {
font-family: monospace;
}
h1 {
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: 3rem;
text-align: center;
padding-top: 300px;
}
footer {
font-family: monospace;
text-align: center;
font-size: large;
}
</style>
</head>
<body>
<script>
// funciones:------------------>
function saltarLinea() {
document.write("<br>");
}
function imprimir(frase) {
document.write(frase);
saltarLinea();
}
// variables ------------------>
// nombre ---------------->
let nombreUsuario = "";
while (!nombreUsuario || !isNaN(nombreUsuario)) {
nombreUsuario = prompt("Por favor, ¿cuál es su nombre?");
if (nombreUsuario == "" || !isNaN(nombreUsuario)) {
alert("Sólo texto por favor ;)");
}
}
//edad -------------------->
let edadUsuario = null;
while (edadUsuario == null || isNaN(edadUsuario)) {
edadUsuario = prompt("Por favor, ¿cuál es su edad?");
if (edadUsuario == null || isNaN(edadUsuario)) {
alert("Sólo números por favor ;)");
}
}
// licencia ------------------>
let licenciaUsuario = "";
while (!licenciaUsuario || !isNaN(nombreUsuario)) {
licenciaUsuario = prompt("¿Cuenta con licencia para conducir?");
if (licenciaUsuario == "" || !isNaN(licenciaUsuario)) {
alert("Por favor, responda solamente 'si' o 'no'");
}
}
// ¿puedo conducir? ------------------>
if (edadUsuario >= 18 && licenciaUsuario == "si") {
imprimir(
"<h1>Adelante " +
nombreUsuario +
", puedes conducir con cuidado.</h1>"
);
}
if (edadUsuario >= 18 && licenciaUsuario == "no") {
imprimir(
"<h1>A pesar de su edad, carece de licencia y no puede conducir sin ella.<br>Diríjase al departamento de vialidad para solicitar una.</h1>"
);
}
if (edadUsuario < 18 && licenciaUsuario == "si") {
imprimir(
"<h1>Siendo menor de edad " +
nombreUsuario +
", no tienes aún permiso para conducir.</h1>"
);
}
if (edadUsuario < 18 && licenciaUsuario == "no") {
imprimir(
"<h1>Siendo menor de edad " +
nombreUsuario +
", no tienes aún permiso para conducir.</h1>"
);
}
</script>
<footer>
<b>Maneje con precaución. Respete al peatón.</b><br />
Este test no tiene validez de ningún tipo. Lección Alura ORACLE ONE. enero
2022.
</footer>
</body>
</html>