DataTables logo DataTables

via Ad Packs
Upgrading from 1.8 -> 1.9 "issues"
  • Hi Allan,

    To begin, i wanna to thank you for your really great job for datatables =)

    I wanna upgrade from 1.8 to 1.9, and i have noticed that the "highlight search function" found in this forum is broken (without any error in the javascript console).

    The code here:

    // HIGHLIGHT FCT
    jQuery.fn.dataTableExt.oApi.fnSearchHighlighting = function(oSettings) {
        // Initialize regex cache
        oSettings.oPreviousSearch.oSearchCaches = {}
        oSettings.fnRowCallback = function( nRow, aData, iDisplayIndex, iDisplayIndexFull) {
            // Initialize search string array
            var searchStrings = [];
            var oApi = this.oApi;
            var cache = oSettings.oPreviousSearch.oSearchCaches;
            // Global search string
            // If there is a global search string, add it to the search string array
            if (oSettings.oPreviousSearch.sSearch) {
                searchStrings.push(oSettings.oPreviousSearch.sSearch);
            }
            // Individual column search option object
            // If there are individual column search strings, add them to the search string array
            if ((oSettings.aoPreSearchCols) && (oSettings.aoPreSearchCols.length > 0)) {
                for (i in oSettings.aoPreSearchCols) {
                    if (oSettings.aoPreSearchCols[i].sSearch) {
                    searchStrings.push(oSettings.aoPreSearchCols[i].sSearch);
                    }
                }
            }
            // Create the regex built from one or more search string and cache as necessary
            if (searchStrings.length > 0) {
                var sSregex = searchStrings.join("|");
                if (!cache[sSregex]) {
                    // This regex will avoid in HTML matches
                    cache[sSregex] = new RegExp("("+sSregex+")(?!([^<]+)?>)", 'i');
                }
                var regex = cache[sSregex];
            }
            // Loop through the rows/fields for matches
            $('td', nRow).each( function(i) {
                // Take into account that ColVis may be in use
                var j = oApi._fnVisibleToColumnIndex( oSettings,i);
                // Only try to highlight if the cell is not empty or null
                if (aData[j]) {
                    // If there is a search string try to match
                    if ((typeof sSregex !== 'undefined') && (sSregex)) {
                        this.innerHTML = aData[j].replace( regex, function(matched) {
                            return "<span class='filterMatches'>"+matched+"</span>";
                        });
                    }
                    // Otherwise reset to a clean string
                    else {
                        this.innerHTML = aData[j];
                    }
                }
            });
            return nRow;
        };
        return this;
    }
    

    An idea?

    Thanks a lot!

    Romain
  • 3 Comments sorted by
  • fnRowCallback is no longer a property of oSettings - instead there is an array of callbacks so multiple callbacks can be defined as needed.

    This is how you would take account of the change: http://live.datatables.net/elonid/edit

    Allan
  • Thinks a lot!

    Issue fixed :)

    Romain
  • Mr. Allan,

    Thank you for fixing the code as well as the code cleanup. I diffed your version and my last version and was educated on a few things I had missed. I greatly appreciate your continued indulgence of this little plugin.

    Cheers,

    CHgsd

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Support

Get useful and friendly help straight from the source.

In this Discussion