Entrada HTML que aceita apenas números e o símbolo +

Estou tentando criar uma entrada de texto personalizada para números de telefone que aceita apenas números e o símbolo de mais (+); todos os outros caracteres precisam ser descartados e não mostrados no campo.

Estou tentando fazer isso usando um manipulador de eventos (onkeydown / onkeypress) e descartando entradas correspondentes a outras chaves. No entanto, não consigo descobrir uma maneira entre navegadores de fazer isso. Aqui estão as abordagens que tentei e não funcionam:

Usando o evento onkeypress e olhando event.key para descobrir qual tecla foi pressionada: não funciona no Chrome (consultehttp://caniuse.com/keyboardevent-key) Existe alguma solução alternativa para vários navegadores?

Usando o evento onkeycode e olhando para event.keyCode: não funciona quando precisamos pressionar várias teclas para imprimir um caractere (por exemplo, um layout de teclado em inglês requer pressionar Shift e = para dar +). Além disso, ele permite que caracteres como! @ # $% ˆ e * () apareçam, como eles aparecem ao pressionar Shift e um número. (Esta é a abordagem seguida emO código-chave JavaScript permite apenas o número e o símbolo de adição, mas isso não me ajuda muito;))

Usando o atributo padrão HTML: isso realmente não parece impedir as pessoas de escrever o que quiserem.

Obrigado!

questionAnswers(7)

yourAnswerToTheQuestion