Format en nombre en cours de frappe

cs_sebalex Messages postés 150 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 6 janvier 2017 - 27 juin 2008 à 15:07
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 27 juin 2008 à 17:44
Bonjour à tous,

Je souhaite que lorsqu'une personne insère un montant (par exemple 100000) dans un champ, le format change automatiquement en cours de frappe et que le champ indique 100'000.

Pouvez-vous m'aider ?

Merci infiniment

David

10 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 juin 2008 à 15:19
Bonjour,
onkeyup sur le champ.
si taille > 3 ==> insertion du ' ( substring, indexOf... )  si cela n'est pas déjà fait.
faire attention que la modif du champ va peut-être entraîner le onkeyup !
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 juin 2008 à 15:20
tiens, un ch'tit exemple qui sépare les chiffres 3 par 3...
à adapter donc....

<HTML>
<HEAD>
<!--   •••••••••••••••••••••••••••••••••••••••••••     -->
<TITLE>• Séparer les chiffres saisis ( 3 par 3 ) •</TITLE>
<!--   •••••••••••••••••••••••••••••••••••••••••••     -->
<script type="text/javascript">
var EnCours=false;
//•••••••••••••••••••••••••••••••••••••••••••••
function trans(zone)    //•••• transformation ••••
//•••••••••••••••••••••••••••••••••••••••••••••
{    if (!EnCours)
    {    if (zone.value.length>3)
        {    zone.value=zone.value.replace(/([^0-9])/g,"");
            trv=zone.value;
            EnCours=true;
            zone.value="";
            var b="";
            for ( var n=trv.length-3;n>0;n=n-3 )
            {    zone.value=trv.substring(n,n+3)+b+zone.value;
                b=" ";   
            }
            zone.value=trv.substring(0,3+n)+" "+zone.value;
            EnCours=false;   
        }   
    }   
}
</script>
</HEAD>

</HTML>

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_sebalex Messages postés 150 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 6 janvier 2017
27 juin 2008 à 15:27
Super, le mécanisme fonctionne à merveille bien que j'aurais préféré que les nombres soient séparés par '. Mais génial.

Le seul problème c'est que j'utilise ce champ pour un calcul et lorsque je mets 1 000 000, il me prend la valeur 1 au lieu de 1'000'000

Une idée ???

Merci

David
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 juin 2008 à 16:04
>>mécanisme fonctionne à merveille bien que j'aurais préféré que les nombres soient séparés par '.
regarde la variable b, qui est faite pour ajouter... un espace.

>>Le
seul problème c'est que j'utilise ce champ pour un calcul et lorsque je
mets 1 000 000,
>>il me prend la valeur 1 au lieu de 1'000'000
c'est bien normal ! tu dois à priori utiliser parseInt ou Number ou....
ça s'arrête au 1er caractère non numérique.
fais un ch'tiot coup de repalace(/ /,'') avant d'utiliser pour des calculs

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_sebalex Messages postés 150 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 6 janvier 2017
27 juin 2008 à 16:10
Merci, mais comme tu as pu le deviner, je ne suis pas une lumière en java. Aussi, aurais-tu l'extrême gentillesse de me montrer le code à remplacer
tu m'as indiqué cela : zone.value=zone.value.replace(/([^0-9])/g,"");
Que dois-je modifier ?

Milles merci encore
David
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 juin 2008 à 16:33
pas un problème de lumière, un problème de lecture....
je parlais de la variable b
            var b="";
            for ( var n=trv.length-3;n>0;n=n-3 )
            {    zone.value=trv.substring(n,n+3)+b+zone.value;
                b="ce que tu veux, ça devrait le faire ou pas loin";   
            }
ce que tu montres c'est l'effacement de tous les caractères non numériques.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 juin 2008 à 16:42
ici aussi d'ailleurs je pense !
        zone.value=trv.substring(0,3+n)+" "+zone.value;
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_sebalex Messages postés 150 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 6 janvier 2017
27 juin 2008 à 16:42
Je m'explique mal.

Le code que tu m'as donné au début est parfais. La seule chose c'est que le résultat de 1'000'000 (grâce à ton code) me donne 1 après validation du champ et je ne sais pas quoi mettre d'autre dans la variable b car j'ai déjà mis b="'"; ce qui me donne le résultat que je veux (1'000'000) dans le champ mais pas après validation.

David
0
cs_sebalex Messages postés 150 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 6 janvier 2017
27 juin 2008 à 16:47
Voici ce que j'ai fait de ton code et le résultat est 1'000'000 lorsque j'entre 1000000 dans le champ. Mais après validation, ça me prend 1 au lieu de 1000000.

            var b="";
            for ( var n=trv.length-3;n>0;n=n-3 )
            {    zone.value=trv.substring(n,n+3)+b+zone.value;
                b="'";   
            }
            zone.value=trv.substring(0,3+n)+"'"+zone.value;
            EnCours=false;   

Si ça peut t'aider, va à l'adresse suivante et tu verras :

http://www.alvarez-associes.com/pageFinancement.php

Milles mercis

David
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 juin 2008 à 17:44
c'est normal ( déjà dit )
il y a des caractères qui ne conviennent pas pour faire du calcul ( espace ou ' ... )
avant d'utiliser : var pour_calcul=zone.value.replace(/([^0-9])/g,"");<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
Rejoignez-nous