Saltar al contenido principal
Codigo Heroe
Tarea anterior
Entrada de texto y manejo de formularios8/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

Reiniciar el contador después del envío

El formulario responde correctamente a la entrada de texto, pero después del envío el campo vacío queda junto al número anterior. El onsubmit preparado vacía el campo con la instrucción commentField.value = ''.

La edición que hace una persona provoca el evento input, pero asignar un valor a la propiedad value desde el programa no lo provoca por sí solo. Por eso, vaciar el campo no ejecuta nuestro oninput y el contador no se actualiza.

Pongamos charCounter.textContent en cero dentro del onsubmit existente para que, después del envío, el contador corresponda al campo vacío. Luego comprobaremos el envío y el inicio del siguiente comentario.

El campo vuelve a estar vacío en este ejercicio. El botón está habilitado, pero el atributo required del HTML sigue impidiendo enviar un formulario vacío. Conservaremos esa validación que ya está preparada.

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"></textarea> </div> <span class="text-counter">Caracteres usados: <output class="char-counter" for="comment-textarea">0</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 = ''; // Pon aquí el contador en cero. 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. En el manejador onsubmit existente, asigna 0 a charCounter.textContent.
      2. Escribe un texto de entre 3 y 142 caracteres en el campo de comentario y envíalo. El comentario aparecerá en la lista, el campo se vaciará y el contador mostrará 0.
      3. Empieza el siguiente comentario: escribe un texto nuevo de al menos tres caracteres. El contador debe volver a mostrar la longitud del texto.
      Codigo Heroe

      © 2023-2026, codigoheroe.com