Obtenir la valeur de <input type=“number”> JS lorsqu'elle contient des caractères non numériques

Cette jsfiddle démontre le problème suivant.

L'exemple le plus simple est:

<input id="number" type="number" value="1">
console.log(document.getElementById('number').value);

Ce journaux 1 comme prévu. CECI cependant:

<input id="number" type="number" value="1A">
console.log(document.getElementById('number').value);

De session à une chaîne vide ", en raison du caractère non numérique dans la valeur. Certains appareils+navigateurs (Chrome par exemple) vous permettent de saisir des caractères non numériques dans ces entrées.

C'est ennuyeux parce que je veux que le type="nombre" d'entrée pour les appareils compatibles (ex: iPhone, iPad clavier numérique). Cependant je veux utiliser javascript pour arrêter sale d'entrée de l'entrée - qui nécessite l'extraction de la valeur sur keyup - alors regex remplacement de la non-numérique caractères.

Il apparaît de jQuery .val() la méthode donne le même résultat.

Ne pas empêcher la saisie de l'utilisateur, c'est très ennuyeux. Vérifier la valeur sur keyup et si la valeur n'est pas valide, l'affichage d'un discret message pour avertir l'utilisateur que la valeur n'est pas valide et laissez-les réparer eux-mêmes. Vous ne se soucient que c'est une valeur valide lors de l'envoi vers le serveur, dans l'intervalle, la valeur peut être ce que. Oh, et Firefox affiche la valeur de l'entrée.
Ont la inputefields seulement le type=number sur les appareils iOS, si vous voulez que la méthode de saisie
Pourquoi avez-vous besoin de la valeur? Vous pouvez savoir ce qui va être inséré à partir des événements de clavier.
merci je ne peux pas croire que je n'ai pas pensé à ça!

OriginalL'auteur captainclam | 2013-03-26