0

I have a Javascript function to permit only numbers in a input.

<input name="onlynumbers" type="text" onkeypress="return isNumber(event);">

This is my Javascript function:

function isNumber(e) {
            k = (document.all) ? e.keyCode : e.which;
            if (k==8 || k==0) return true;
            search = /[0-9]/;
            n = String.fromCharCode(k);
            return search.test(n);
        }

But now I need to permit numbers and also "K" character. I was trying to modify it but I couldn't get it.

May you help me please?

Thanks you! :)

Nacho Sarmiento
  • 463
  • 3
  • 8
  • 17

3 Answers3

1

Add K to search:

search = /[0-9K]/;

if you also need lowercase k:

search = /[0-9kK]/;
Emil
  • 1,131
  • 13
  • 23
0

In terms of getting just numeric keystrokes, I've been using this function which I didn't originally create, but found somewhere:

function blockNonnumericKeystrokes(e) {
    if (e.keyCode == '13') {
        prorate();
        return;
    }
        // Allow: backspace, delete, tab, escape, enter and .
        if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
             // Allow: Ctrl+A
            (e.keyCode == 65 && e.ctrlKey === true) || 
             // Allow: home, end, left, right
            (e.keyCode >= 35 && e.keyCode <= 39)) {
                 // let it happen, don't do anything
                 return;
        }
        // Ensure that it is a number and stop the keypress
        if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
            e.preventDefault();
        }
    }
ControlAltDel
  • 33,923
  • 10
  • 53
  • 80
0
  • You can use this regex /\d+|k/i - That regex accepts k and K, if you only want number and uppercase K then remove the incase sensitive flag i: /\d+|k/

  • The attribute e.key is the pressed key

document.querySelector('[name="onlynumbers"]').addEventListener('keypress', function(e) {
  if (!/\d+|k/i.test(e.key)) e.preventDefault();
});
<input name="onlynumbers" type="text">

Resource

Ele
  • 33,468
  • 7
  • 37
  • 75