Saltar al contenido principal
Codigo Heroe
Tarea anterior
Entrada de texto y manejo de formularios6/9
A la lista de tareas
  1. 1. Evento input: responder a la entrada de texto
  2. 2. Propiedad length: longitud de una cadena
  3. 3. Contador de caracteres en la página
  4. 4. Operador >: detectar si se supera el límite
  5. 5. Condición y advertencia
  6. 6. Propiedad disabled: deshabilitar el botón
  7. 7. Rama else: restaurar el formulario
  8. 8. Reiniciar el contador después del envío
  9. 9. Cambiar el límite de caracteres
Siguiente tarea
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

Propiedad disabled: deshabilitar el botón

La advertencia apareció, pero el botón permitió enviar el comentario largo. Aprendamos a deshabilitarlo cuando se supere el límite.

La propiedad disabled («deshabilitado» en inglés) controla si el botón está disponible. El valor true lo deshabilita y false lo habilita:

let button = document.querySelector('button');
button.disabled = true;  // Deshabilitar
button.disabled = false; // Habilitar

Nuestro botón tiene la clase submit-button. Busquémoslo y guardémoslo en submitButton. Dentro de la rama que se ejecuta al superar el límite, deshabilitaremos el botón.

Por ahora solo escribiremos una rama. Al acortar el texto, el botón no se habilitará por sí solo y la advertencia seguirá ahí. Es una limitación esperada de esta versión intermedia; en el siguiente paso agregaremos las acciones inversas.

Deshabilitar el botón controla esta forma de envío. Aquí no vamos a crear una validación completa del formulario ni una validación de los datos en el servidor.

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! — comentarios</title> </head> <body class="page light-theme"> <header class="page-header"> <div class="container"> <span class="header-logo"><img src="img/main-logo.svg" width="67" height="29" alt="Logotipo de FlashNews!"></span> </div> </header> <main class="inner-news"> <article class="container"> <h1 class="inner-heading">Caminar puede ser bueno para ti</h1> <div class="news-full"> <img src="img/walk.jpg" alt="Personas caminando"> <p>Un estudio reveló que las relaciones con nuestros seres queridos influyen más en la felicidad que el sueldo o el número de seguidores. Todavía no se sabe cómo influye la cantidad de gatitos.</p> </div> </article> <section class="comment-feed container"> <h2>Comentarios</h2> <ol class="comment-list"> <li class="user-comment">¡Una buena razón para salir a caminar y comentar las noticias con amigos!</li> </ol> <form action="https://codigoheroe.com/echo" method="post" class="comment-form"> <div class="comment-inner"> <label class="comment-label" for="comment-textarea">Tu comentario</label> <textarea class="comment-field comment-area" rows="4" placeholder="Comentario" required id="comment-textarea">Para entender a Kant, primero hay que entenderse a uno mismo. A veces llevas felicidad a alguien y acabas entregándole un libro de filosofía.</textarea> </div> <span class="text-counter">Caracteres usados: <output class="char-counter" for="comment-textarea">141</output>/<span class="char-limit">142</span></span> <button class="button submit-button" type="submit">Enviar</button> </form> </section> </main> <footer class="page-footer"> <div class="container"> <p>© FlashNews!</p> <span class="footer-logo"><img src="img/white-logo.svg" alt="Logotipo de FlashNews!"></span> </div> </footer> <script src="comments.js"></script> </body> </html>
    /* Estilos preparados para el campo y el contador */ .comment-area { height: auto; resize: vertical; margin-bottom: 10px; padding-top: 4px; padding-bottom: 4px; line-height: 24px; } .text-counter { display: inline-block; padding: 7px 0; margin-right: auto; } /* La clase warning resalta un comentario demasiado largo */ .comment-form.warning .comment-label, .comment-form.warning .comment-area, .comment-form.warning .char-counter { color: #c43d13; } .comment-form.warning .comment-area { outline: 2px solid #c43d13; } .comment-form.warning .char-counter { font-weight: bold; } /* El botón deshabilitado se ve más tenue */ .submit-button:disabled { opacity: 0.35; cursor: default; }
    let commentForm = document.querySelector('.comment-form'); let commentList = document.querySelector('.comment-list'); let commentField = document.querySelector('.comment-field'); let charCounter = document.querySelector('.char-counter'); // Declara aquí la variable submitButton. commentForm.onsubmit = function (evt) { evt.preventDefault(); let newComment = document.createElement('li'); newComment.classList.add('user-comment'); newComment.textContent = commentField.value; commentField.value = ''; commentList.append(newComment); }; commentField.oninput = function () { charCounter.textContent = commentField.value.length; if (commentField.value.length > 142) { commentForm.classList.add('warning'); } };

    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. Después de la declaración de charCounter, busca .submit-button y guarda el elemento en una nueva variable llamada submitButton.
      2. Dentro del if, asigna true a submitButton.disabled.
      3. Haz que el comentario tenga más de 142 caracteres: el botón se deshabilitará. Luego acorta el texto a 142 caracteres o menos. El contador bajará, pero el botón seguirá deshabilitado y la advertencia no desaparecerá todavía.
      Codigo Heroe

      © 2023-2026, codigoheroe.com