Je dois m'assurer qu'un certain <input>
champ ne prend que des nombres comme valeur. L'entrée ne fait pas partie d'un formulaire. Par conséquent, il n'est pas soumis, donc la validation lors de la soumission n'est pas une option. Je souhaite que l'utilisateur ne puisse pas saisir de caractères autres que des chiffres.
Y a-t-il un moyen efficace d'y parvenir?
html
input
numbers
validating
Chiel ten Brinke
la source
la source
Réponses:
HTML 5
Vous pouvez utiliser le numéro de type d'entrée HTML5 pour limiter uniquement les entrées numériques:
Cela ne fonctionnera que dans le navigateur de plaintes HTML5. Assurez-vous que le doctype de votre document html est:
<!DOCTYPE html>
Voir également https://github.com/jonstipe/number-polyfill pour une prise en charge transparente dans les navigateurs plus anciens.
JavaScript
Mise à jour: Il existe une nouvelle solution très simple pour cela:
Consultez cette réponse ou essayez-la vous-même sur JSFiddle .
Pour un usage général, vous pouvez avoir la validation JS comme ci-dessous:
Si vous souhaitez autoriser les décimales, remplacez la "condition if" par ceci:
Source: la saisie de texte HTML autorise uniquement la saisie numérique
Démo de JSFiddle: http://jsfiddle.net/viralpatel/nSjy7/
la source
var charCode = (evt.which) ? evt.which : evt.keyCode;
Vous pouvez également utiliser l'attribut pattern dans html5:
Tutoriel de validation d'entrée
Bien que, si votre doctype ne l'est pas,
html
je pense que vous devrez utiliser du javascript / jquery.la source
Code rapide et facile
Cela permettra l'utilisation de nombres et de retour arrière uniquement.
Si vous avez également besoin d'une partie décimale, utilisez ce fragment de code
la source
Veuillez essayer ce code avec le champ de saisie lui-même
cela fonctionnera très bien.
la source
Vous pouvez utiliser un fichier
<input type="number" />
. Cela permettra uniquement de saisir des nombres dans la zone de saisie.Exemple: http://jsfiddle.net/SPqY3/
Veuillez noter que la
type="number"
balise d' entrée n'est prise en charge que dans les navigateurs plus récents.Pour Firefox, vous pouvez valider l'entrée en utilisant javascript:
http://jsfiddle.net/VmtF5/
Mise à jour 2018-03-12: La prise en charge du navigateur est bien meilleure maintenant, elle est prise en charge par les éléments suivants:
la source
et dans le js:
ou vous pouvez l'écrire d'une manière compliquée mais utile:
Remarque : cross-browser et regex en littéral.
la source
0.43
ou.43
) qui pourraient être effectués en vérifiant la valeur de l'entrée actuelle plus la touche enfoncée. Ce serait moche dans le code d'une ligne, je recommande d'utiliser une fonction pour cela. Pour tester un entier ou un flottant, cochez ici .J'ai utilisé une expression régulière pour remplacer la valeur d'entrée par le modèle nécessaire.
la source
onkeyup
se déclenche lorsque la clé est relâchée.isNaN(parseFloat(value))?
vérifie si la valeur d'entrée n'est pas un nombre.S'il ne s'agit pas d'un nombre, la valeur est définie sur 1000.
:
S'il s'agit d'un nombre, la valeur est définie sur la valeur.Remarque: pour une raison quelconque, cela ne fonctionne qu'avec
type="number"
Pour le rendre encore plus excitant, vous pouvez également avoir une limite:
Prendre plaisir!
la source
Je me suis battu avec celui-ci pendant un moment. De nombreuses solutions ici et ailleurs semblaient compliquées. Cette solution utilise jQuery / javascript avec HTML.
Dans mon cas, je suivais de petites quantités avec une valeur minimale de 1, d'où le min = "1" dans la balise d'entrée et abc = 1 dans le contrôle isNaN (). Pour les nombres positifs uniquement, vous pouvez changer ces valeurs en 0 et même simplement supprimer min = "1" de la balise d'entrée pour permettre des nombres négatifs.
Cela fonctionne également pour plusieurs boîtes (et pourrait vous faire gagner du temps de chargement en les effectuant individuellement par id), ajoutez simplement la classe "validateNumber" si nécessaire.
Explication
parseInt () fait essentiellement ce dont vous avez besoin, sauf qu'il renvoie NaN plutôt qu'une valeur entière. Avec un simple if () vous pouvez définir la valeur de "repli" que vous préférez dans tous les cas où NaN est retourné :-). W3 déclare également ici que la version globale de NaN tapera cast avant la vérification, ce qui donne une preuve supplémentaire (Number.isNaN () ne le fait pas). Toutes les valeurs envoyées à un serveur / backend doivent toujours y être validées!
la source
JSFiddle: https://jsfiddle.net/ug8pvysc/
la source
si vous pouvez utiliser HTML5, vous pouvez le faire.
<input type="number" />
Sinon, vous devrez soit le faire via javascript, car vous l'avez dit, il n'est pas soumis pour le faire à partir de codebehind.PS n'a pas testé le code mais il devrait être plus ou moins correct sinon vérifier les fautes de frappe: D Vous pourriez vouloir ajouter quelques autres choses comme quoi faire si la chaîne est nulle ou vide, etc.
la source
Que diriez-vous d'utiliser
<input type="number"...>
?http://www.w3schools.com/tags/tag_input.asp
Aussi, voici une question qui a quelques exemples d'utilisation de Javascript pour la validation .
Mise à jour: lié à une meilleure question (merci alexblum).
la source
sinon ensemble entier 0
la source
La réponse acceptée:
C'est bon mais pas parfait. Cela fonctionne pour moi, mais je reçois un avertissement indiquant que l'instruction if peut être simplifiée.
Ensuite, cela ressemble à ceci, qui est bien plus joli:
Je voudrais commenter le message original, mais ma réputation est trop faible pour le faire (je viens de créer ce compte).
la source
Vous pouvez utiliser la
<input>
balise avec l'attribut type = 'number'.Par exemple, vous pouvez utiliser
<input type='number' />
Ce champ de saisie n'autorise que des valeurs numériques. Vous pouvez également spécifier la valeur minimale et la valeur maximale qui doivent être acceptées par ce champ.
la source
Veuillez consulter mon projet de filtre cross-browser de valeur de l'élément d'entrée de texte sur votre page Web en utilisant le langage JavaScript: Input Key Filter . Vous pouvez filtrer la valeur sous forme de nombre entier, de nombre flottant ou d'écrire un filtre personnalisé, tel qu'un filtre de numéro de téléphone. Voir un exemple de code d'entrée d'un nombre entier:
Voir aussi ma page "Champ entier:" de l'exemple du filtre de clé d'entrée
la source
Pour un usage général, vous pouvez avoir la validation JS comme ci-dessous:
Cela fonctionnera pour le clavier numérique et les touches numériques normales
la source
Ajoutez à l'intérieur de votre balise d'entrée: onkeyup = "value = value.replace (/ [^ \ d] / g, '')"
la source
J'ai mis à jour certaines réponses publiées pour ajouter ce qui suit:
Spécifiez le nombre de nombres autorisé après la virgule décimale.
la source
Je l'utilise pour les codes postaux, rapidement et facilement.
la source
Lorsque vous utilisez ce code, vous ne pouvez pas utiliser "BackSpace Button" dans Mozilla Firefox, vous ne pouvez utiliser le retour arrière que dans Chrome 47 && event.charCode <58; "pattern =" [0-9] {5} "required>
la source
http://www.texotela.co.uk/code/jquery/numeric/ crédits d' entrée numérique à Leo Vũ pour l'avoir mentionné et bien sûr à TexoTela. avec une page de test.
la source
Il est préférable d'ajouter "+" à la condition REGEX afin d'accepter plusieurs chiffres (pas seulement un chiffre):
<input type="text" name="your_field" pattern="[0-9]+">
la source
Une façon pourrait être d'avoir un tableau de codes de caractères autorisés, puis d'utiliser la
Array.includes
fonction pour voir si le caractère saisi est autorisé.Exemple:
la source
Assez simple?
la source