C'è un modo per fare questo con keydown, se pressione di un tasto non è praticabile a causa di esigenze di cancellazione dell'evento, ecc utilizzare un'istruzione if() con questo test:
parseInt(event.keyIdentifier.substring(2),16) > 47 && parseInt(event.keyIdentifier.substring(2),16) < 58
O, con eventi jQuery:
parseInt(event.originalEvent.keyIdentifier.substring(2),16) > 47 && parseInt(event.originalEvent.keyIdentifier.substring(2),16) < 58
Questi esempi presuppongono che "evento" è l'evento keydown. keyIdentifier è un numero esadecimale che rappresenta il valore unicode per il carattere correlato. Usando keyIdentifier, i numeri dal tastierino numerico/tastiera E i numeri sopra la tastiera QWERTY avranno tutti gli stessi valori, 48 - 57 (U + 0030 - U + 0039), anche con l'evento keyDown.
I valori Unicode nei browser saranno U + 0030 o U + 002F. Analizza questa stringa per ottenere solo il valore esadecimale, quindi usa parseInt() con una radice di 16 per convertirlo in base-10.
Supponiamo che entrambi desiderino i caratteri reali dalla tastiera e che desiderino anche catturare e interrompere il tasto Invio, per impedire che un modulo venga inviato? L'interruzione della pressione di un tasto sembra ancora inviare. – enigment
Non posso esprimere quanto sono grato per questa risposta. Questa è stata la mia salvezza cercando di cogliere tutti i diversi casi possibili con shift, alt, tastierino numerico e tastiere mobili. 'keypress' lo rende facile come torta! – nirazul