J'ai un événement lié à une entrée qui ne devrait permettre que des nombres. Simplifié:
function (e) { if (-1 === [48,49,50,51,52,53,54,55,56,57].indexOf(e.keyCode)) { e.preventDefault(); } }
Cela fonctionne bien, mais si quelqu'un tape ! , @ , # , $ , Etc. KeyCode est toujours le même et le défaut d'événement n'est pas empêché.
Sur un clavier physique, je peux l'éviter tout simplement en vérifiant e.shiftKey
. Cependant, sur un clavier virtuel iOS, certains de ces caractères existent (comme $
) même pour <input type=number>
et ils peuvent être tapés directement. Leur codeCode est le même, mais il semble que e.shiftKey
soit toujours faux.
Il existe une variété de solutions possibles qui seraient acceptables pour moi:
Vous pouvez utiliser <input type="tel" />
pour limiter l'entrée aux nombres dans iOS – bien que cela permette également "* 'et' #" d'être dactylographié, du moins il est moins de travail car il vous suffit de vérifier Pour ces deux personnages