Your current code only uses numbers entered at the top of the keyboard not on the numeric keypad
if ((e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105)) return true;
return false;
What is specialKeys supposed to do? I assume its array of characters like ".", "-"