0
$('#cnic1').keydown(function(){
    if (event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || 
    event.keyCode == 13 || (event.keyCode == 65 && event.ctrlKey === true) )
    return;
    if((event.keyCode < 48 || event.keyCode > 57))//0-9
    event.preventDefault();
    var length = $(this).val().length; 
    if(length == 5 || length == 13)
    $(this).val($(this).val()+'-');
    });

My problem is that this code only runs in response to the numbers entered at the top of the keyboard, but does not run in response to numbers entered from the numeric keypad.

I'm thinking the answer must be that the numeric keypad has different keyCode values, but how do I find out what those are?

Sadam
  • 9
  • 2

3 Answers3

1

The numeric keypad does have different keyCode values. The following link gives a full table of keyCodes for your reference:

https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

4Randale
  • 11
  • 2
0

Use this code and press the keys. keycodes will be on console log;

window.onload = function(){
addEventListener("keydown",function(e){

console.log(e.keyCode);

});
}
0

Change if condition as

if((event.keyCode < 48 || event.keyCode > 57)&&(event.keyCode < 96 || event.keyCode > 105))//0-9

$('#cnic1').keydown(function() {
  if (event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 ||
    event.keyCode == 13 || (event.keyCode == 65 && event.ctrlKey === true))
    return;
  if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) //0-9
    event.preventDefault();
  var length = $(this).val().length;
  if (length == 5 || length == 13)
    $(this).val($(this).val() + '-');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="cnic1">
Geethu Jose
  • 1,953
  • 2
  • 14
  • 30