Entrada HTML que solo toma números y el símbolo +

Estoy tratando de crear una entrada de texto personalizada para números de teléfono que acepte solo números y el símbolo más (+); todos los demás caracteres deben descartarse y no mostrarse en el campo.

Estoy tratando de hacer esto usando un controlador de eventos (onkeydown / onkeypress) y descartando las entradas correspondientes a otras teclas. Sin embargo, no puedo encontrar una forma de hacerlo entre navegadores. Estos son los enfoques que he probado y no funcionan:

Usando el evento onkeypress y mirando event.key para averiguar qué tecla se presionó: no funciona en Chrome (verhttp://caniuse.com/keyboardevent-key) ¿Hay alguna solución para varios navegadores?

Usando el evento onkeycode y mirando event.keyCode: no funciona cuando necesitamos presionar varias teclas para imprimir un carácter (por ejemplo, un diseño de teclado en inglés requiere presionar Shift y = para dar +). Además, permite que aparezcan caracteres como! @ # $% ˆ & * (), como aparecen al presionar Mayús y un número. (Este es el enfoque seguido enEl código de JavaScript permite solo el número y el símbolo más, pero no me ayuda mucho;))

Usando el atributo de patrón HTML: Esto realmente no parece impedir que las personas escriban lo que quieran.

¡Gracias!

Respuestas a la pregunta(7)

Su respuesta a la pregunta