Saltar al contenido principal
Codigo Heroe
Tarea anterior
Estilos dinámicos de los elementos9/15
A la lista de tareas
  1. 1. La propiedad style
  2. 2. Ajustar el color del texto
  3. 3. Obtener el valor de un control deslizante
  4. 4. Cambiar el tamaño de la fuente
  5. 5. El manejador oninput
  6. 6. Ajustar el color de fondo
  7. 7. La propiedad type
  8. 8. Mostrar la contraseña con una casilla
  9. 9. La propiedad checked
  10. 10. Cambiar el ancho de la barra
  11. 11. Vincular el ancho con la longitud de la contraseña
  12. 12. Guardar la longitud de la contraseña en una variable
  13. 13. Operadores de comparación
  14. 14. La estructura else if
  15. 15. La rama else
Siguiente tarea
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

La propiedad checked

¡Muy bien! Ya le indicamos a JavaScript que muestre la contraseña al marcar la casilla. Al desmarcarla, la contraseña debería ocultarse. Pero aún no ocurre: basta con marcarla una vez para que la contraseña quede siempre visible. ¿Cómo lo corregimos?

Agregaremos una estructura condicional al manejador de eventos para comprobar si la casilla está marcada. Si lo está, convertiremos el campo de contraseña en uno de texto. Si no, le devolveremos el tipo password. Para comprobar el estado de la casilla usaremos la propiedad checked.

Esta propiedad tiene un valor booleano: true si la casilla está marcada y false si no lo está.

// Comprobamos si la casilla está marcada
if (showPassword.checked) {
  // Mostramos la contraseña
} else {
  // Ocultamos la contraseña
}

Agreguemos la estructura condicional al manejador de eventos y comprobemos que la contraseña aparece al marcar la casilla y se oculta al desmarcarla.

Todos los archivos
    <!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="setting.css"> <link rel="stylesheet" href="style.css"> <title>FlashNews! Crear una cuenta</title> </head> <body class="page light-theme"> <header class="page-header"> <div class="container"> <a class="header-logo"> <img src="img/main-logo.svg" width="67" height="29" alt="Logotipo del portal FlashNews!"> </a> <a href="subscription.html" class="subscription-link">Suscripción</a> <button class="theme-button" type="button">Cambiar tema</button> </div> </header> <main class="index-main"> <div class="container"> <h1 class="inner-heading">Crear una cuenta</h1> <form class="reg-form" action="https://codigoheroe.com/echo" method="post"> <label class="reg-label" for="reg-name">nombre de usuario</label> <input class="name" type="text" value="Mapache Reconocido" id="reg-name" name="reg-name" placeholder="Mapache Reconocido" required> <label class="reg-label" for="reg-pass">contraseña</label> <input class="password" type="password" value="CupcakeManda777" id="reg-pass" name="reg-pass" placeholder="**********" required > <div class="security"> <div class="security-bar"></div> </div> <input class="show-password visually-hidden" type="checkbox" id="show-pass"> <label class="checkbox-label" for="show-pass">Mostrar contraseña</label> <button class="button" type="submit">Crear cuenta</button> </form> </div> </main> <footer class="page-footer"> <div class="container"> <p>© FlashNews!</p> <a class="footer-logo"> <img src="img/white-logo.svg" alt="Logotipo del portal FlashNews!"> </a> </div> </footer> <script src="themes.js"></script> <script src="password.js"></script> </body> </html>
    /* Formulario de registro */ .reg-form { display: flex; flex-direction: column; flex-wrap: wrap; margin-top: 12px; margin-bottom: 30px; padding: 8px 12px; } .reg-label { z-index: 1; margin-right: auto; margin-bottom: -6px; margin-left: -6px; padding: 2px 6px; font-size: 10px; line-height: 14px; } .name, .password { width: 100%; margin-bottom: 10px; padding: 0 10px; background-color: transparent; font: inherit; font-size: 14px; line-height: 30px; outline-offset: 0; border: 1px solid; } .password { padding-bottom: 4px; } .name::placeholder, .password::placeholder { color: #aaaaaa; font: inherit; font-size: 14px; font-style: italic; } .name:focus::placeholder, .password:focus::placeholder { font-size: 0; } .name:hover::placeholder, .name:active::placeholder, .password:hover::placeholder, .password:active::placeholder { opacity: 0.5; } .checkbox-label { position: relative; margin: 4px auto 16px 0; padding: 4px 24px; } .checkbox-label::before { position: absolute; content: ""; flex-shrink: 0; top: 3px; left: 0; width: 14px; height: 14px; background-position: center; background-repeat: no-repeat; border-radius: 2px; border: 1px solid; } .show-password:focus + .checkbox-label::before { outline: auto; outline-width: 4px; } .checkbox-label:active::before { opacity: 0.6; } .reg-form .button { margin-right: auto; margin-bottom: 16px; } .security { position: relative; margin: -14px 1px 8px; width: calc(100% - 2px); overflow: hidden; background-color: #eae9f2; } .security::before { position: absolute; content: ""; width: 4px; height: 4px; top: 0; left: 50%; background-color: #ffffff; } .security::after { position: absolute; content: ""; width: 4px; height: 4px; top: 0; left: 90%; background-color: #ffffff; } .security-bar { height: 4px; width: 0; background-color: mediumpurple; } /* Temas de color del formulario de registro */ .light-theme .reg-form { background-color: #ffffff; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); } .light-theme .reg-label { color: #6653d9; background-color: #ffffff; } .light-theme .name, .light-theme .password { border-color: #eae9f2; color: #333333; outline-color: #b6aaff; } .light-theme .checkbox-label::before { background-color: #ffffff; border-color: #6653d9; } .light-theme .checkbox-label:hover::before { background-color: #b6aaff; } .light-theme .show-password:checked + .checkbox-label::before { background-color: #6653d9; background-image: url("img/check-light.svg"); } .light-theme .show-password:focus + .checkbox-label::before { outline-color: #b6aaff; } .light-theme .security { background-color: #eae9f2; } .light-theme .security::before, .light-theme .security::after { background-color: #ffffff; } .dark-theme .reg-form { background-color: #2a2930; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.6); } .dark-theme .reg-label { color: #9484f2; background-color: #2a2930; } .dark-theme .name, .dark-theme .password { border-color: #473c8d; color: #f2f2f2; outline-color: #6653d9; } .dark-theme .checkbox-label::before { background-color: #2a2930; border-color: #9484f2; } .dark-theme .checkbox-label:hover::before { background-color: #9484f2; } .dark-theme .show-password:checked + .checkbox-label::before { background-color: #9484f2; background-image: url("img/check-dark.svg"); } .dark-theme .show-password:focus + .checkbox-label::before { outline-color: #6653d9; } .dark-theme .security { background-color: #473c8d; } .dark-theme .security::before, .dark-theme .security::after { background-color: #2a2930; }
    let password = document.querySelector('.password'); let showPassword = document.querySelector('.show-password'); showPassword.onchange = function () { // Agrega aquí la estructura condicional password.type = 'text'; };
    let page = document.querySelector('.page'); let themeButton = document.querySelector('.theme-button'); themeButton.onclick = function () { page.classList.toggle('light-theme'); page.classList.toggle('dark-theme'); };

    El código ha cambiado, haz clic en "Actualizar" o activa la ejecución automática.

    Ha ido a otra página

    Haga clic dentro del mininavegador para poner el foco en esta ventana.

    100%
    Consola
    ObjetivosRealizado
    0
      1. En la línea 5, agrega una estructura condicional. Usa showPassword.checked como condición.
      2. Mueve la instrucción password.type = 'text'; al interior de la estructura condicional.
      3. Agrega una rama alternativa else a la estructura condicional. Dentro de ella, cambia el tipo del campo password a 'password'.
      4. En el mininavegador, marca la casilla «Mostrar contraseña» y después desmárcala. Observa que la contraseña primero aparece y después se oculta.
      Codigo Heroe

      © 2023-2026, codigoheroe.com