Formulaire et calcul simple entre des champs de texte

Résolu
smile75 Messages postés 45 Date d'inscription lundi 14 novembre 2005 Statut Membre Dernière intervention 26 janvier 2011 - 11 juin 2007 à 23:52
cs_embalmer Messages postés 120 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007 - 13 juin 2007 à 21:52
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

cs_Mafassure Messages postés 1058 Date d'inscription jeudi 24 juillet 2003 Statut Modérateur Dernière intervention 14 février 2009
12 juin 2007 à 14:40
//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
3
cs_Mafassure Messages postés 1058 Date d'inscription jeudi 24 juillet 2003 Statut Modérateur Dernière intervention 14 février 2009
12 juin 2007 à 14:46
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
3
cs_embalmer Messages postés 120 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007
12 juin 2007 à 15:05
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

++
3
cs_Mafassure Messages postés 1058 Date d'inscription jeudi 24 juillet 2003 Statut Modérateur Dernière intervention 14 février 2009
12 juin 2007 à 15:16
EMBALMER >ca depend de l'utilisation que l'on en fera mais  je trouve ton script est plus efficasse...

a+

ActionScript Experience
3

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

Posez votre question
smile75 Messages postés 45 Date d'inscription lundi 14 novembre 2005 Statut Membre Dernière intervention 26 janvier 2011
12 juin 2007 à 22:44
 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 
3
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
13 juin 2007 à 16:42
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'
3
cs_embalmer Messages postés 120 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007
13 juin 2007 à 19:53
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) ?

++
3
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
13 juin 2007 à 20:00
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'
3
cs_Mafassure Messages postés 1058 Date d'inscription jeudi 24 juillet 2003 Statut Modérateur Dernière intervention 14 février 2009
13 juin 2007 à 20:38
EMBALMER > j'avais pas vu le parseInt() (j'ai lu en diagonal...) attention tu perd la precision !

ActionScript Experience
3
cs_embalmer Messages postés 120 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007
13 juin 2007 à 21:52
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);
        }
    }
}

++
0
Rejoignez-nous