Donnez vie à vos documents numériques !
 

Comment limiter à "2" maximum la somme de 3 champs texte (format nombre)

abracadabraPDF Forums PDF – Général Comment limiter à "2" maximum la somme de 3 champs texte (format nombre)

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45690
    sribera
    Membre

    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:

Affichage de 6 réponses de 1 à 6 (sur un total de 6)
  • Auteur
    Réponses
  • #62719
    Merlin
    Maître des clés

    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 :

    Code:
    if (event.value == «  » || event.value == null)
    {event.target.value = 0;}

    Le script de Calcul :

    Code:
    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 else if (nTotal {
    oProduit1.readonly = false;
    oProduit2.readonly = false;
    oProduit3.readonly = false;
    }

    #62720
    sribera
    Membre

    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:

    #62721
    Merlin
    Maître des clés

    Oui c’est réalisable mais il faut un peu de temps, donc réponse dans les jours qui viennent…  :priere:

    #62722
    sribera
    Membre

    :bonjour: Merci infiniment

    #62723
    Merlin
    Maître des clés

    J’ai placé ça dans les trois champs de saisie, ça à l’air de fonctionner :

    Code:
    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;
    }
    #62724
    sribera
    Membre

    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.

Affichage de 6 réponses de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.