Inscrivez-vous

abracadabraPDF Forum

Le seul forum francophone entièrement dédié au format PDF

sribera

23 juin 2017 : 08:54
Apprenti sorcier Messages: 23
Bonjour à tous,

Comment peut-on limiter la saisie de trois champs texte (chaque champ doit être entre 0 et 2) afin que la somme de ces 3 champs soit égale à "2" ?
Je sais faire une liste déroulante si nécessaire, mais elle ne limitera pas la somme à "2".
Pour que ce soit plus clair j'ai mis un fichier en exemple...

Merci d'avance pour toute l'aide que vous pourrez m'apporter.
 :Euuuh:
« Modifié: 23 juin 2017 : 11:52 par Merlin »

  • Grand magicien
  • Messages: 7 199
Bonjour.

Exemple ci-joint, le script de Calcul se trouve dans le champ total.
Le secret réside dans le petit script d'Action "champ désactivé" placé dans chaque champ de saisie qui empêche leur valeur d'être "null" ou "rien" en forçant la valeur à zéro si on ne saisi rien.
Zéro est également leur "Valeur par défaut", en cas de reset.

 :Smiley15:

Le script d'Action :

if (event.value == "" || event.value == null)
{event.target.value = 0;}


Le script de Calcul :
oProduit1 = this.getField("QteProduit.1");
oProduit2 = this.getField("QteProduit.2");
oProduit3 = this.getField("QteProduit.3");
nTotal = Number(oProduit1.value) + Number(oProduit2.value) + Number(oProduit3.value);
event.target.value = nTotal;
// Si total = 2 on désactive le(s) champ(s) à zéro
if (nTotal == 2)
{
if (oProduit1.value == 0)
{oProduit1.readonly = true;}
if (oProduit2.value == 0)
{oProduit2.readonly = true;}
if (oProduit3.value == 0)
{oProduit3.readonly = true;}
}
// si total < 2 on réactive tous les champs
else if (nTotal <= 2)
{
oProduit1.readonly = false;
oProduit2.readonly = false;
oProduit3.readonly = false;
}
« Modifié: 23 juin 2017 : 14:14 par Merlin »
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 23
Bonjour Merlin
Merci beaucoup pour ce début de réponse, mais cela ne correspond pas totalement à mes attentes.
En effet, si je saisi "1" dans le champs "produit1", je peux encore saisir "2" dans les champs "produit2" ou "produit3" ce qui me fait un total de 3...
Or il me faut absolument un total de 2 maximum, donc sur les trois champs il ne peut-y avoir de saisi que (dans n'importe quel ordre)  :
Soit 2 + 0 + 0  (total = 2)
Soit 1 + 1 + 0  (total = 2)
Est-ce que c'est plus clair ? Est-ce réalisable ?  :mur:

  • Grand magicien
  • Messages: 7 199
Oui c'est réalisable mais il faut un peu de temps, donc réponse dans les jours qui viennent…  :priere:
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 23

  • Grand magicien
  • Messages: 7 199
J'ai placé ça dans les trois champs de saisie, ça à l'air de fonctionner :

nTotal = this.getField("QteProduit.1").value + this.getField("QteProduit.2").value + this.getField("QteProduit.3").value;
if (nTotal > 2)
{
event.value = 0;
nTotal = this.getField("QteProduit.1").value + this.getField("QteProduit.2").value + this.getField("QteProduit.3").value;
this.getField("total").value = nTotal;
}
else
{
this.getField("total").value = nTotal;
}
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 23
Merci infiniment Merlin, cela fonctionne à merveille, je n'ai eu qu'à cacher le total et c'est parfait. :bravo: :bravo: :bravo:
Désolée pour ce retour tardif, mais je n'étais pas au travail pendant plusieurs jours.