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.