Formulaire et calcul simple entre des champs de texte [Résolu]

Signaler
Messages postés
45
Date d'inscription
lundi 14 novembre 2005
Statut
Membre
Dernière intervention
26 janvier 2011
-
Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007
-
Bonjour à tous

Encore une fois, j'ai besoin d'aide

Je peine sur un truc:

J'ai un formulaire à faire et j'aimerais que les champs texte réagissent ensemble.

Comment faire pour qu' un champ texte de saisie, soit multiplié par 15euro (parex) dans un autre champs texte situé en face du premier.?

Question simple a mon avis pour vous les kings mais moi je ne sais pas et j'aimerais apprendre

D'avance merci.

Cs

10 réponses

Messages postés
1058
Date d'inscription
jeudi 24 juillet 2003
Statut
Modérateur
Dernière intervention
14 février 2009

//exemple deux TextField sur la scene --> txtIn la saisie ET txtOut le resultat
var txtIn:TextField;
var txtOut:TextField;
//un bt pour déclancher le calcul
bt:MovieClip;

var multipl:Number = 15;

bt.onRelease = calcul();
//par ex  perte du focus sur le champs on calcul le resutat
txtIn.onKillFocus = calcul();

function calcul() {
    var total:Number = Number(txtIn.text)*multipl;
    var out:String = isNaN(total) ? " Erreur de saisie " :  " resultat " + total " euro" ;
    txtOut.text =out
};

vite fait y'a peux etre une coquille :s

a+

ActionScript Experience
Messages postés
1058
Date d'inscription
jeudi 24 juillet 2003
Statut
Modérateur
Dernière intervention
14 février 2009

j'ai verifié en effet y'a des coquilles :s

// deux TextField -> txtIn ET txtOut
var txtIn:TextField;
var txtOut:TextField;//un bt pour déclancher le calcul
var bt:MovieClip;

var multipl:Number = 15;
txtIn.onKillFocus = calcul;
bt.onRelease = calcul;
function calcul() {
    var total:Number = Number(txtIn.text)*multipl;
    var out:String = isNaN(total) ? " Erreur de saisie " :  " resultat " + total;
    txtOut.text =out
};
a+

ActionScript Experience
Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007

Salut,

Salut, bon le temps que j'écrive un ptit script Mafassure avait déjà posté lol. mais bon vu que j'aime pas me pencher sur un problème pour rien je te le donne qd même.

this.createTextField("champSaisie", 99, 10, 10, 300, 20);
this.champSaisie.border = true;
this.champSaisie.type = "input";
this.champSaisie.restrict = "0-9";

this.createTextField("champReponse", 100, 10, 100, 300, 20);
this.champReponse.border = true;
this.champReponse.type = "dynamic";
this.champSaisie.onKillFocus = function() {
        this._parent.champReponse.text = (parseInt(this.text, 10)*15)+" ?";
};

Bon du coup ça n'apporte pas grand chose mais bon.... c'est toujours bon à prendre

++
Messages postés
1058
Date d'inscription
jeudi 24 juillet 2003
Statut
Modérateur
Dernière intervention
14 février 2009

EMBALMER >ca depend de l'utilisation que l'on en fera mais  je trouve ton script est plus efficasse...

a+

ActionScript Experience
Messages postés
45
Date d'inscription
lundi 14 novembre 2005
Statut
Membre
Dernière intervention
26 janvier 2011

 Ok merci. Je me demandais comment ca se passe si il y en a plusieurs ???

et je dirais meme plus comment les additioner?

Merci
cs 
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
9
il y a encore plus simple et en temps réel :

Text1.onChanged = function() {
    Text2.text = Number(Text1.text)*15;
}

Sachant que Text1 est l'ID de la zone de saisie et que Text2 est la zone à afficher le résultat
Quand on tape un chiffre dans Text1, celui-ci est instantanément multiplié par 15 dans la zone suivante.

Peg'
Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007

Peg' > vi c'est la même chose que ce que j'ai mis sauf que tu ne crée pas tes textes dynamiquement. Perso j'ai mis le gestionnaire d'évenement onKillFocus plutôt que onChanged parce que ce dernier est appellé à chaque chiffre que tu tappe.

Smile75 > Dis nous deja si tu veux utiliser un bouton pour valider à la fin ou effectuer une addition progressive à chaque saisie (du genre Excel) ?

++
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
9
je parlais bien de l'évènement et pas du code en lui-même ... et je trouvais justement que cette réactivité était plus appropriée à ce qui était demandé.

Peg'
Messages postés
1058
Date d'inscription
jeudi 24 juillet 2003
Statut
Modérateur
Dernière intervention
14 février 2009

EMBALMER > j'avais pas vu le parseInt() (j'ai lu en diagonal...) attention tu perd la precision !

ActionScript Experience
Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007

Mafassure > Oui je sais c'était un exemple comme ça pour travailler avec des entiers.

Smile75 > Allez, voilà un ptit script qui crée 10 champs textes et qui les additionnes dans un champ résultat (nb : et qui travaille en décimal mafassure ) .

for (i=1; i<=10; i++) {
    this.createTextField("champSaisie"+i,this.getNextHighestDepth(),10,i*30+50,150,20);
    this["champSaisie"+i].border = true;
    this["champSaisie"+i].type = "input";
    this["champSaisie"+i].restrict = ".0-9";
    this["champSaisie"+i].text = 0;
    this["champSaisie"+i].onKillFocus = function() {
        this._parent.calcul();
    };
}

this.createTextField("champResultat",this.getNextHighestDepth(),300,(Stage.height/2)-10,150,20);
this.champResultat.border = true;
this.champResultat.type = "dynamic";
this.champResultat.text = 0;

function calcul() {
    this.champResultat.text = 0;
    for (j=1; j<=10; j++) {
        if (isNaN(Number(this["champSaisie"+j].text)) == false) {
            this.champResultat.text = Number(this.champResultat.text)+Number(this["champSaisie"+j].text);
        }
    }
}

++