Character Limit using HTML CSS and JavaScript

HTML
<div class="input-box">
    <textarea placeholder="Add your title" name="name" rows="8" cols="80"></textarea>
    <span class="title">Title</span>
    <div class="characters">
        <span class="signal_num">0</span>
        <span class="limit_num">/100</span>
    </div>
</div>
CSS
/* Google font import link */
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600;700&display=swap');

*{
    margin:0;
    padding:0;
    box-sizing:border-box;
    font-family:'Poppins',sans-serif;
}
body{
    min-height:100vh;
    display:flex;
    align-items:center;
    justify-content:center;
    background:#007bff;
    padding: 0 15px;
}
.input-box{
    position:relative;
    height:160px;
    max-width:560px;
    width:100%;
    background:#fff;
    padding:30px;
    border-radius:6px;
}
.input-box textarea{
    height:100%;
    width:100%;
    outline:none;
    border:2px solid rgba(0,0,0,0.2);
    border-radius:6px;
    resize:none;
    padding:25px 15px;
    font-size:15px;
    font-weight:500;
    caret-color:#007bff
}
.input-box textarea:focus,
.input-box textarea:valid{
    border-color:#007bff;
}
.input-box.error textarea{
    border-color:red;
}
.input-box textarea::placeholder{
    font-size:15px;
    font-weight:500;
}
.input-box .title{
    position:absolute;
    top:38px;
    left:45px;
    color:#007bff;
}
.input-box.error .title{
    color:red;
}
.input-box .characters{
    position:absolute;
    bottom:35px;
    right:45px;
    display:flex;
    align-items:center;
    color:#007bff;
    display:none;
}
.input-box.error .characters{
    color:red;
}
.input-box.active .characters{
    display:block;
}
.input-box.error .characters{
    display:block;
}
JS
let inputBox = document.querySelector(".input-box"),
    textarea = inputBox.querySelector("textarea"),
    signalNum = inputBox.querySelector(".signal_num");

textarea.addEventListener("keyup",() =>{
    
    let valLenght = textarea.value.length;//stored textarea
    
    signalNum.innerText = valLenght; //converted signalNum innerText
    (valLenght > 0) ? inputBox.classList.add("active") : inputBox.classList.remove("active");
    (valLenght > 100) ? inputBox.classList.add("error") : inputBox.classList.remove("error");
    
});

/* All the credist: https://www.youtube.com/watch?v=5xJlLAWrAGg */

Autor: Leonard

Publicado: 13/01/2023

Compartir Elemento Web

Donar a Compositu
Otras formas de ayudar
  • Compártelo en tus redes sociales.
  • Recomienda los elementos.
  • Regístrate Aquí
  • Deja tu comentario agradeciendo el aporte.

Descarga el código completo del Elemento Web y archivos necesarios (imágenes, librerias, plugins, frameword, etc)

Deja tu comentario