javascript – Controlar entrada de datos en un input por JS

Tengo una función en JS para controlar lo que el usuario puede o no introducir por teclado.
Ahora mismo llamo a esa función mediante un onkeypress de manera que cada vez que el usuario teclea en el input compruebo que es correcto.

Ahora tengo el problema de que si copia y pega un texto en ese input al no haber tecleado una tecla no se llama a la función, he probado con el onchange pero con el problema de que si copio y pego en ese input y directamente doy al botón submit no llama a la función.

¿Cual es la forma correcta para poder llamar a esa función en cualquier caso posible?