Validate Input just accept number only

How can I validate my input with type = text just only accept number?
I tried to use

$$(document).on('change', '#phoneNumber', function (e) {

                    $$('#phoneNumber').keypress(function (e) {
                        //Check control+c,ctrl+v,// var ctrlKey = 17, cKey = 67, vKey = 86;
                        //Shift+Arrow key
                        if (e.shiftKey && (e.which === 37 || e.which === 39)) {
                            return true;
                        }
                        //Arrow key
                        if (e.keyCode === 37 || e.keyCode === 39) {
                            return true;
                        }
                        if (e.ctrlKey && (e.which === 67 || e.which === 86)) {
                            return true;
                        }
                        if (e.keyCode === 8 || e.keyCode === 46) {
                            return true;
                        }
                        var inputVal = String.fromCharCode(e.which);
                        var characterReg = /^\s*[0-9,\s]+\s*$/;
                        if (!characterReg.test(inputVal)) {
                            $$('#phoneNumber').val('');
                            return false;

                        }
                        return true;
                    });
                });

It return false but character still appear to my input. I cann’t use type= number because it showing like this
image

Try to change event to keydown instead of keypress

And use event.preventDefault() together with return false