ccc

JQueryui Datatables: filtrar genérico (sin acentos, mayúsculas, etc)

Por una parte en tu web:
function accents_supr(data){
        return ! data ?
            '' :
            typeof data === 'string' ?
                data
                    .replace( /\n/g, ' ' )
                    .replace( /[áàäâ]/g, 'a' )
                    .replace( /[éèëê]/g, 'e' )
                    .replace( /[íìïî]/g, 'i' )
                    .replace( /[óòöô]/g, 'o' )
                    .replace( /[úùüû]/g, 'u' ):
                data;
    
            jQuery.extend( jQuery.fn.dataTableExt.oSort,
            {
                "spanish-string-asc"  : function (s1, s2) { return s1.localeCompare(s2); },
                "spanish-string-desc" : function (s1, s2) { return s2.localeCompare(s1); }
            });
    
            jQuery.fn.DataTable.ext.type.search['spanish-string'] = function ( data ) {
                return accents_supr(data);      
            }
    }

Y luego en el datatables.js hay que modificar:
function nb(a) {
   var b = !this.value ? "" : this.value;
   b=accents_supr(b);
   ....
  g(a.nTable).on("search.dt.DT", function (b, c) {
                // LSG
                totalReg = a.aoData.length;
                for (k=0; k < totalReg; k++) {
                    a.aoData[k]._sFilterRow = a.aoData[k]._sFilterRow.replace("á", "a");
                    a.aoData[k]._sFilterRow = a.aoData[k]._sFilterRow.replace("é", "e");
                    a.aoData[k]._sFilterRow = a.aoData[k]._sFilterRow.replace("í", "i");
                    a.aoData[k]._sFilterRow = a.aoData[k]._sFilterRow.replace("ó", "o");
                    a.aoData[k]._sFilterRow = a.aoData[k]._sFilterRow.replace("ú", "u");
                    // console.log(show_props(a.aoData[k], "o"));
                }
                // FIN LSG
            ....
}

1 comentario:

  1. Muchas gracias. Había probado por lo menos 5 variantes distintas de esto mísmo. El único que anduvo fue este.

    ResponderEliminar