[RESOLU] Limiter un champ à des nombres, et à une décimale

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Limiter un champ à des nombres, et à une décimale

Re: [RESOLU] Limiter un champ à des nombres, et à une décimale

par finipe » 07 févr. 2016, 23:45

Pour ceux que ça intéresse pour plus tard, j'ai finalement refait un script en partant de zéro, ne trouvant pas mon bonheur ailleurs.

Les conditions sont les suivantes :
  • uniquement des chiffres ou un point (ou une virgule qui se transforme en point)
  • pas plus d'une décimale après la virgule
  • pas de point ou de virgule en premier caractère

Code : Tout sélectionner

function Calculatrice_Format(id) { var champ = document.getElementById(id); var texte = champ.value; var n = texte.length; var i; var car; var point = 0; var retour = ""; for(i=0 ; i<n ; i++) { car = texte.substring(i,i+1); nb = parseInt(car); // Point ou virgule if(car == "," || car == ".") { // Pas de point en 1er caractère if(i != 0 && point == 0) { retour += "."; point = 1; } } else if(Number.isInteger(nb) == true) { if(point < 2) retour += texte.substring(i,i+1); // Si un point a déjà été mis, alors ce chiffre est une décimale if(point == 1) point = 2; } } // Renvoi de la valeur champ.value = retour; }
Voilà, a priori c'est efficace. J'ai peut-être réinventé la roue (la roue de trottinette, quoi...) mais ça fonctionne :D

Edit : je précise que la fonction est appelée sur onKeyUp, onMouseUp et onChange

Re: Limiter un champ à des nombres, et à une décimale

par finipe » 04 févr. 2016, 15:35

La solution HTML5 est absoluement GENIALE ! J'opte pour ça :)
Merci beaucoup !

Re: Limiter un champ à des nombres, et à une décimale

par ynx » 03 févr. 2016, 13:14

Salut,

Une autre possibilité en html5 :
<input type="number" min="0" max="99.99" step="0.01">

<input type="text" pattern="([1-9]?[0-9]?)+(\,[0-9][0-9]?)?">
Bonne journée

Re: Limiter un champ à des nombres, et à une décimale

par finipe » 03 févr. 2016, 11:52

Wow... j'ai rien compris à ce code ! Si, j'ai compris qu'il y avait une expression régulière, mais c'est tout. :lol:
Faut dire, je ne suis décidément pas une flèche en javascript :roll:

Bon, j'essaye quand même, parce que la solution jQuery donnée plus haut est un peu lourde pour ce que je veux faire.

Re: Limiter un champ à des nombres, et à une décimale

par or 1 » 02 févr. 2016, 01:22

var re = /^\d+([.,]\d)?$/;
var str = '22,4';
var m;

if ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}

Re: Limiter un champ à des nombres, et à une décimale

par finipe » 02 févr. 2016, 01:08

Pas mal en effet ce truc ! Merci je vais essayer :)

Re: Limiter un champ à des nombres, et à une décimale

par Saian » 29 janv. 2016, 19:20

Bonjour, peut être avec ce plugin jquery ?
https://igorescobar.github.io/jQuery-Mask-Plugin/

Tu peux surement en trouver un tas d'autres. ;)

Limiter un champ à des nombres, et à une décimale

par finipe » 29 janv. 2016, 14:58

Bonjour,

J'ai un champ de saisie que j'aimerais limiter au format suivant : (X)X.Y

En gros, un nombre décimal, avec un ou deux chiffres avant la virgule, puis un point (ou une virgule qui se change en point), puis un chiffre après la virgule. Ou tout simplement un chiffre rond, sans décimale.

J'ai codé pas mal de truc, mais je n'arrive pas à résoudre tous les cas de figures : c'est tout con a priori, mais en fait pas tant que ça ! Quelqu'un a-t-il une solution miracle ? Ou un script qui marche ? :D

Merci de votre aide.