Skip to content
Advertisement

How to restrict apart from alphabets and numbers any other keys (function keys, shortcut keys etc.) press action on datatable search input?

Jquery:

Is there please an option to start the search only alphabet and number keys have been typed in?

Datatable globally searching should initiate at least with 3 characters

$(document).on('draw.dt','.dataTable', function() {            
    $(".dataTables_filter input").off().on("input keyup", function(e) { 
        // if value length is greater than 3 or user press enter (keycode = 13) on search we will search on datatable
        if(this.value.length >= 3 || e.keyCode == 13 || this.value == "") {
            var dataTable = $('.table').DataTable();
            dataTable.search(this.value).draw();
        }
    }); 
});

Advertisement

Answer

Solution:

Check this solution. I hope, it will work.

$(document).on('draw.dt','.dataTable', function() { 
    $(".dataTables_filter input").off().on("input keyup", function(e) { 
        // if value length is greater than 3 or user presses enter (keycode = 13) on search 
        // we will search on datatable
        if(this.value.length >= 3 || e.keyCode == 13 || this.value == "") {
            var checkBackspaceEnter =  e.keyCode == 8 || e.keyCode == 13;
            // if user removes a character from search we will search
            var checkAlphabet = (e.keyCode >= 58 && e.keyCode <= 90);   
            // check on alphabets
            var checkNum = (e.keyCode >= 48 && e.keyCode <= 57 
                || e.keyCode >= 96 && e.keyCode <= 105); 
            // check on number values
            var ctrlCombine = (e.keyCode == 17 || ((e.keyCode == 65 || e.keyCode == 67 ) 
                && e.ctrlKey)); 
            // don't search when user hits Ctrl+A or Ctrl+C 
            checkAlphabet = ((ctrlCombine == false) ? checkAlphabet : false);   

            if (checkAlphabet || checkNum || checkBackspaceEnter) {
                var dataTable = $('.table').DataTable();
                dataTable.search(this.value).draw();
            }
        }
    }); 
});
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement