Salve, cerco di sviluppare uno script per filtrare la una tabella molto lunga in base ad un input.
Questo quello che ho prodotto fin'ora:
codice:
//Funzione per filtri
function filter_table() {
var value = $(".search").val();
var rows = $('.rows tr');
if (value.toUpperCase().replace(/ /g, '').length > 2) {
var val = $.trim(value).replace(/ +/g, ' ').toLowerCase();
rows.show()
rows.filter(function() {
var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
return !~text.indexOf(val);
}).hide();
}
else if (value.replace(/ /g, '').length <= 2) {
rows.show();
}
}
//Evento Filtro
$('.search').live("change",function() {
$(".search").val($(this).val());
$(".wait").fadeIn(400, function () {
$.when(filter_table()).then(function () {
$(".wait").fadeOut(400);
});
});
});
La ricerca sembra funzionare, paradossalmente ho molti più problemi quando devo nuovamente mostrare tutto. Il browser si freeza ma poi alla fine tutto va, questo su chrome. Su firefox invece la situazione peggiora, dopo una prima ricerca ad ogni successivo tentativo di filtro mi compare il cartello che mi invita a bloccare o attendere l'eseguzione dello script.
Come potrei ottimizzare tutto cercando di evitare che i browser si blocchino? Chiaramente considerate che la lista è veramente molto lunga.
Attendo e grazie in anticipo!