Saltar al contenido

jQuery DataTables: Retrasar la búsqueda hasta que se escriban 3 caracteres O se haga clic en un botón

Bienvenido a nuestra web, aquí encontrarás la solucíon de lo que estás buscando.

Solución:

Nota: Esto fue para una versión mucho más antigua de tablas de datos, consulte esta respuesta para jQuery datatables v1.10 y superior.


Esto modificará el comportamiento del cuadro de entrada para filtrar solo cuando se haya presionado Intro o haya al menos 3 caracteres en la búsqueda:

$(function()
  var myTable=$('#myTable').dataTable();

  $('.dataTables_filter input')
    .unbind('keypress keyup')
    .bind('keypress keyup', function(e)
      if ($(this).val().length < 3 && e.keyCode != 13) return;
      myTable.fnFilter($(this).val());
    );
);

Puede verlo funcionando aquí: http://jsbin.com/umuvu4/2. No sé por qué la gente de dataTables se une tanto a la pulsación de tecla como a la tecla, pero estoy anulando ambos para mantener la compatibilidad, aunque creo que la tecla es suficiente.

¡Espero que esto ayude!

Solución para la versión 1.10 -

Después de buscar aquí una respuesta completa y no encontrar ninguna, he escrito esto (utilizando el código de la documentación y algunas respuestas aquí).

El siguiente código funciona para retrasar la búsqueda hasta que se ingresen al menos 3 caracteres:

// Call datatables, and return the API to the variable for use in our code
// Binds datatables to all elements with a class of datatable
var dtable = $(".datatable").dataTable().api();

// Grab the datatables input box and alter how it is bound to events
$(".dataTables_filter input")
    .unbind() // Unbind previous default bindings
    .bind("input", function(e)  e.keyCode == 13) 
            // Call the API search function
            dtable.search(this.value).draw();
        
        // Ensure we clear the search if they backspace far enough
        if(this.value == "") 
            dtable.search("").draw();
        
        return;
    );

¿Por qué no probar esta versión extendida de la respuesta de Stony? 🙂

var searchWait = 0;
var searchWaitInterval;
$('.dataTables_filter input')
.unbind('keypress keyup')
.bind('keypress keyup', function(e)
    var item = $(this);
    searchWait = 0;
    if(!searchWaitInterval) searchWaitInterval = setInterval(function()
        if(searchWait>=3)
            clearInterval(searchWaitInterval);
            searchWaitInterval = '';
            searchTerm = $(item).val();
            oTable.fnFilter(searchTerm);
            searchWait = 0;
        
        searchWait++;
    ,200);

);

Esto retrasará la búsqueda hasta que el usuario haya dejado de escribir.

Espero eso ayude.

Recuerda que puedes comunicar este artículo si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *