Math.min pour récupérer la plus petite valeur dans des champs d'un formula

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 : Math.min pour récupérer la plus petite valeur dans des champs d'un formula

RE Merci

par cireultra » 27 oct. 2008, 13:56

RE Merci Berzemus


A+

Cireultra

par Berzemus » 27 oct. 2008, 13:00

Ah, tu n'utilises pas que des entiers, alors il faut utiliser des "floats" plutôt que des "integer".

Code : Tout sélectionner

var bazar[]; if (parseFloat(pu1) >=0) bazar.push(parseFloat(pu1)); // Si pu1 contient un chiffre, ajoute-le au tableau 'bazar' if (parseFloat(pu2) >=0) bazar.push(parseFloat(pu2)); // idem if (parseFloat(pu3) >=0) bazar.push(parseFloat(pu3)); // idem if ( (tota6.value > 11) && (tota6.value < 24) ) { OFFERT.value = Math.min.apply(Math,bazar); // retourne la valeur minimale du tableau bazar. }
Ton exemple avec le 6 et tout le toutim, c'est bizarre. Je n'y vois pas de logique. D'ou sort ce 6 ? S'il est juste à multiplier par le nombre de 'pu', il suffit de vérifier si la longueur du tableau 'bazar' multiplié par 6 est supérieur à 12. De ce style:

Code : Tout sélectionner

var test = bazar.length * 6; if ( (test > 11) && (test < 24) ) { OFFERT.value = Math.min.apply(Math,bazar); }

Merci

par cireultra » 27 oct. 2008, 11:48

Merci pour ta réponse.

Je débute en prog.

Effectivement la ligne var OOFFERT = Math.min(pu1.value, pu2.value, pu3.value) ; dans le premier ne sert à rien (supprimer).

Je veux que OFFERT soit rempli quand tota6 > 11 même si les 3 valeurs (pu1,pu2 et pu3) ne sont pas toutes remplies.

Exemple: pu1=5.10(prix) x 6(nombre) pu2=3.50(prix) x 6(nombre) pu3= champ vide
donc --> tota6=12(6+6) la valeur de OFFERT=3.50(pu2->le plus petit)

C'est plus clair (pas sur !)

Je teste ton code.

Avec ton code : OFFERT se rempli quand tota6 > 11 mais pas avec une valeur mais avec "Infinity" ?

J'ai testé aussi ça.

Code : Tout sélectionner

if ((tota6.value > 11)&&(tota6.value < 24)){ var OOFFERT = Math.min((pu1.value)||(pu2.value)||(pu3.value)) ; OFFERT.value = OOFFERT ; } else { OFFERT.value = 0 ; }
Ca fonctionne sans remplir les trois champs (pu1,pu2,pu3) mais OFFERT prend toujours la valeur de pu1.


A +

Cireultra

par Berzemus » 27 oct. 2008, 11:10

Déjà, ton code est mal construit. Le résultat de ton premier if est le même que le dernier else, et tu finis par réaffecter deux fois la valeur de OFFERT.

Et je ne vois pas pourquoi tu calcules OOFFERT dans le premier, tu ne l'utilises pas.

Dans ton cas, je verrais ceci:

Code : Tout sélectionner

var bazar = []; if (parseInt(pu1) >0) bazar.push(pu1); if (parseInt(pu2) >0) bazar.push(pu2); if (parseInt(pu3) >0) bazar.push(pu3); if ( (tota6.value > 11) && (tota6.value < 24) ) { OFFERT.value = Math.min.apply(Math,bazar); }
Mais dans ta dernière phrase, tu ne t'exprimes pas très clairement.

Math.min pour récupérer la plus petite valeur dans des champ

par cireultra » 26 oct. 2008, 18:38

Bonjour,

J’utilise Math.min pour récupérer la plus petite valeur dans des champs d’un formulaire.

Le code :

Code : Tout sélectionner

if ((tota6.value > 0)&&(tota6.value < 12)){ OFFERT.value = 0 ; } if ((tota6.value > 11)&&(tota6.value < 24)){ var OOFFERT = Math.min(pu1.value, pu2.value, pu3.value) ; OFFERT.value = OOFFERT ; } else { OFFERT.value = 0 ; }

La valeur OFFERT doit être à 0 tant que tota6 est inférieur à 11.
Quand la valeur tota6 dépasse 11 la valeur de OFFERT devient la plus petite des 3 valeurs de pu1 pu2 et pu3 ; cela fonctionne.

Mon problème c’est que si par exemple la valeur de pu1 est supérieure à 11 et que pu2 et pu3 ne sont pas rempli, la valeur de OFFERT reste à 0, cela ne fonctionne que quand les 3 valeurs sont rempli.
Je voudrais qu’il récupère la valeur de total6 à partir du moment ou une des valeurs pu1 pu2 et pu3 ou la somme de pu1 + pu2, pu2 + pu3 et pu1+ pu3 dépasse 11.

Merci d’avance,

Cireultra