Saltar al contenido principal
Codigo Heroe
Tarea anterior
Entrada de texto y manejo de formularios9/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
Lista de tareas
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

Cambiar el límite de caracteres

Cupcake tiene un nuevo requisito: el comentario debe tener como máximo 100 caracteres. Los manejadores ya funcionan. Encuentra dónde decide el programa si se superó el límite y haz que esa decisión coincida con la etiqueta debajo del campo.

Para comprobarlo, reemplazamos el comentario preparado: ahora tiene 99 caracteres y el contador inicial marca 99. El resto corresponde al resultado del ejercicio anterior. El HTML está disponible en la pestaña index.html y la lógica en comments.js.

Comprueba ambos lados del límite y el envío. Exactamente 100 caracteres están permitidos; 101 ya supera el límite. Al acortar el texto hasta una longitud permitida, la advertencia debe desaparecer y el botón debe habilitarse.

Ahora sabes responder a la entrada de texto, obtener la longitud de una cadena, mostrarla en la página, compararla con un límite, cambiar la advertencia y la disponibilidad del botón, y reiniciar el contador después del envío.

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">Salí a caminar, vi a mis amigos y lo entendí: las buenas noticias empiezan con las cosas sencillas.</textarea> </div> <span class="text-counter">Caracteres usados: <output class="char-counter" for="comment-textarea">99</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'); let submitButton = document.querySelector('.submit-button'); commentForm.onsubmit = function (evt) { evt.preventDefault(); let newComment = document.createElement('li'); newComment.classList.add('user-comment'); newComment.textContent = commentField.value; commentField.value = ''; charCounter.textContent = 0; commentList.append(newComment); }; commentField.oninput = function () { charCounter.textContent = commentField.value.length; if (commentField.value.length > 142) { commentForm.classList.add('warning'); submitButton.disabled = true; } else { commentForm.classList.remove('warning'); submitButton.disabled = false; } };

    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. Modifica la lógica de comments.js para que la advertencia y el bloqueo del botón se activen solo cuando se supere el nuevo límite de 100 caracteres.
      2. En index.html, cambia a 100 la etiqueta del límite debajo del campo. Conserva el valor del contador, que corresponde a la longitud del texto preparado.
      3. Haz que el comentario tenga más de 100 caracteres y luego acorta el texto a 100 caracteres o menos. Al superar el límite aparecerá la advertencia y el botón se deshabilitará; después de acortar el texto, la advertencia desaparecerá y el botón se habilitará.
      4. Envía un comentario que no esté vacío y que tenga como máximo 100 caracteres. Aparecerá en la lista, el campo se vaciará y el contador volverá a cero.
      Codigo Heroe

      © 2023-2026, codigoheroe.com