Curso Práctico de JavaScript

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

En tu archivo de estilos .css agregar la clase:

.inactive{
    display: none !important;
  }

En tu archivo .html agregar un input de tipo texto y una tabla con datos:

<input class="form-control mt-2 mb-2  search_tables"   data-table="table-users"   type="text"/>

Para el imput se requiere dos cosas importantes un selector de tipo clase que nos permita identificar al input y un identificador para asociar a una tabla
.search_table : clase que identifica al input
data-table= guarda el selector de la tabla al cual se buscar esta asociado el input para ralizar la busqueda
captura 1.jpg

E****jemplo de tabla estatica(la tabla puede llenarse dinamicamente desde una base de datos) con datos:

<input class="form-control mt-2 mb-2  search_tables"   data-table="table-users"   type="text"/>
 <table class="table">
        <thead>
            <tr>
                <th scope="col">Id</th>
                <th scope="col">Nombre</th>
                <th scope="col">Correo</th>
                <th scope="col">Teléfono</th>
            </tr>
        </thead>
        <tbody id="table-users">
            <tr class="">
                <td scope="row">1</td>
                <td>Josue Rodrigo Martin Canto</td>
                <td>josuemartincanto93@gmail.com</td>
                <td>9993574286</td>
            </tr>
            <tr class="">
                <td scope="row">2</td>
                <td>Karina Vallegos Canche</td>
                <td>Karina3@gmail.com</td>
                <td>9994656730</td>
            </tr>
            <tr class="">
                <td scope="row">3</td>
                <td>Gloria Dzul Villegas</td>
                <td>Gloria@gmail.com</td>
                <td>9990507097</td>
            </tr>
            
        </tbody>
    </table>

El selector de tipo id del tbody debe ser igual al data-table del input
captura 3.jpg

Ejemplo del resultado con bootstrap :

captura 2.jpg

En el archivo javascript .js

Primero se seleccionan todos los inputs (esto se hace de esta forma por si hay mas de un input en un html)

const allInputSeach =document.querySelectorAll('.search_tables');

Se crea un método al cual se asignara a cada input

function searchDateTable (){
    //obtener el id de la tabla a la cual estara asociada
    let Id='#'+this.getAttribute('data-table');

    //obtener el elemento body de la tabla asociada
    const table_tbody = document.querySelector(Id);

    //obtener todas fila la tabla
    const rowsTables=table_tbody.querySelectorAll('tr');
    
    //valida que el input no este vacio, de modo que si esta vacion no perder tiempo en intentar buscar el dato en la fila
    if(this.value=="" && estado == false){
        return;
    }
    //Recorremos cada fila tabla tabla asociada
     rowsTables.forEach(element => {
        //iniciamos ocultando cada fila asignadole la clase inactive
        element.classList.add(class_hidden);

        //validad que si el input no esta vacio
        if(this.value !=""){
            // obteners todo la información de la fila en mayusculas
            const textRow= element.innerText.toUpperCase();
            //obtener lo que el usario tecleo en el input  convertido en mayusculas
            let valueInput=this.value.toUpperCase();
            //validamos silo que esta escrito en el input existe en la fila 
            if(textRow.indexOf(valueInput) > -1){
                //si existe eliminamos la clase inactive para mostrar la fila
                element.classList.remove(class_hidden);
            }
            estado = true;
        }else{
            //si esta vacio se elimina la clase inactive para mostrar la fila
            element.classList.remove(class_hidden);
            estado= false;
        }
     
    }); 
}

Asignar a cada input un evento de tipo keyup asociado al método searchDateTable:

allInputSeach.forEach(element => {
    element.addEventListener('keyup',searchDateTable);
});


¿Por qué internamente se hace una conversión de la infomación antes de comparar si el texto existe en la tabla?
Para no tener sensibilidad entre mayúsculas y minúsculas en los datos a comparar y tener resultado más eficiente sin importar como esta escrito.
¿Por qué no se muestra el texto de la fila en mayúsculas?
unicamente se convierte la información a mayúsculas internamente para su comparación, nose modifica el texto de la fila.

Pruebas de funcionalidad:
Resultado de una busquedacaptura 5.jpg
captura 4.jpg

Curso Práctico de JavaScript

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

0 Comentarios

para escribir tu comentario

Artículos relacionados