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.