Donnez vie à vos documents numériques !
 

Correction dans un calcul lors d’un backspace

abracadabraPDF Forums PDF – Général Correction dans un calcul lors d’un backspace

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #43699
    MichelAM
    Membre

    Bonjour, n’ayant plus programmé en javascript depuis quelques temps, j’ai du mal à m’y remettre….

    Je cherche tout simplement à faire un calcul automatique avec une alerte (jusque là j’y arrive..) mais lorsque je corrige l’un des chiffres, cela ne vas plus. Je m’explique, sur un dessin je dois calculer une cote d’entraxe pour centrer le dit entraxe sur une pièce :

    1600 pour la première pièce, 1000 pour la seconde, ce qui me fait 300 de chaque coté de la seconde pièce. Jusque là ça va.
    1600 pour la première pièce, 1800 pour la seconde, ce qui me fait -100 de chaque coté de la seconde pièce. Là j’ai programmé un message d’alerte pour me dire que ça ne va pas puisque les trous sont en dehors de la pièce.
    Je corrige donc le 1800 par un appuis sur la touche backspace et mon 1800 devient 180 mais mon -100 reste tel quel….  :Euuuh:
    Je voudrais donc savoir comment faire pour que mon calcule prenne en compte mon backspace (je ne sais pas si je me suis bien fait comprendre?).

    Merci pour toute réponse qui pourra m’aider. :priere:
    A+
    MichelAM

Affichage de 12 réponses de 1 à 12 (sur un total de 12)
  • Auteur
    Réponses
  • #50084
    Lionel
    Membre

    Bonjour,

    sur la touche backspace

    :Euuuh: Euh, en français, c’est laquelle la touche « backspace » ?  :???: (en presque trente ans d’informatique, je n’ai jamais entendu parler d’une telle appellation…)  :doute:
    ça aiderait peut être déjà à comprendre le problème.  ;)

    Ordre des calculs ?

    Bien cordialement.
    Lionel

    #50085
    Merlin
    Maître des clés

    Backspace : retour

    Michel, je pense simplement que le code JavaScript n’est pas placé au bon endroit ou pas sur le bon événement.

    Il faudrait que tu en dise plus…

    :idee:

    #50086
    MichelAM
    Membre

    Bonsoir, effectivement « backspace » est la touche « retour arrière » située au dessus de la grosse touche « Entrée » (mes premier claviers – il y a un peu plus de 26 ans – avaient les touches avec le texte en anglais écrit dessus et j’en ai gardé l’habitude – je dis souvent Return ou Enter pour Entrée, Shift pour Majuscule ou encore Escape pour Echappe….mais là n’est pas le sujet ;))

    J’explique, j’ai sur une page 4 zones de texte, la première contient la longueur totale de ma pièce, la seconde contient la cote d’entraxe de mes 2 trous et les 2 dernières contiennent la même chose puisqu’il s’agit de centrer la cote de la zone 2 sur celle de la zone 1.

    Je tape donc 1800 dans la première zone puis je vais taper 1200 dans la seconde et à fur et à mesure que je tape (1 puis 2 puis 0 et pour finir 0); les zones 3 et 4 se remplissent automatiquement (1049,5 puis 1418,75 puis 840 et pour finir 300).
    Mon problème et que si je tape sur la touche « retour arrière » pour revenir 120 dans la zone 2, mes zones 3 et 4 restent à 300 puis je retape une fois sur « retour arrière » pour obtenir 12 mes zones 3 et 4 passent à 840 ; en gros les zones 3 et 4 ont un temps de retard… :mecontent:

    Au final je crois qu’un exemple sur un fichier serait plus parlant (si je puis m’exprimer ainsi… :D).
    A+
    MichelAM

    #50087
    Lionel
    Membre

    Bonsoir,

    Merci pour l’explication.

    Un problème similaire (un cran de retard dans les calculs) m’étais arrivé, je retente -de mémoire- l’idée de l’ordre dans lequel les variables sont lues / prises en compte (ceci affectant les calculs). :idee:

    Bien cordialement.
    Lionel

    #50088
    MichelAM
    Membre

    Je soumet cet exemple pour essayer de comprendre la touche « retour arrière ».

    Dans la première zone il suffit de rentrer un chiffre, dans la seconde il y a un résultat et dans la troisième il y a le nombre de caractère de la première zone. Si quelqu’un peut me dire pourquoi cela ne marche pas, je serais très heureux….
    (Tout le code est dans la première zone)

    A+
    MichelAM

    [attachment deleted by admin]

    #50089
    Merlin
    Maître des clés

    Je ne comprend pas cette ligne du script :

    if(event.keyCode == « 8 »){

    Que veut-elle dire et que doit elle faire ? C’est quoi keyCode = 8 ???

    Pour le reste c’est en bonne voie…
    :extra:

    #50090
    MichelAM
    Membre

    KeyCode 8 = touche « retour arrière »

    A+
    MichelAM

    #50091
    MichelAM
    Membre

    Mon soucis et que lorsque je tape sur « retour arrière » d’une part le calcul de la zone 2 ne se fait pas et d’autre part la zone 3 ne diminue pas, bien au contraire puisqu’il augmente…..  :Euuuh:

    Code:
    if (event.value + event.change){
        this.getField(‘Texte3’).value = (event.value + event.change) – 4;
        }
    if(event.keyCode == « 8 »){
        this.getField(‘Texte4’).value = (this.getField(‘Texte4’).value) – 1;
        }
        else{
        this.getField(‘Texte4’).value = (this.getField(‘Texte4’).value) + 1;
    }

    A+
    MichelAM

    #50092
    Merlin
    Maître des clés

    En fait apparemment ton script compte le nombre d’entrée dans le champ et non pas le nombre de caractères qui s’y trouvent.

    Et le comptage des entrées ne s’effectue que pour la touche backspace, pas pour les autres alors qu’il y en a d’autre, comme la touche effacement, qui ont le même comportement.

    Si c’est l’info recherchée il me paraîtrait plus simple de compter les caractères contenus dans le champ plutôt que de faire des déductions à partir des touches utilisées…

    Et je ne peux pas vraiment tester puisque là je suis avec un portable qui n’a pas cette touche (sauf en combinaison par raccourci-clavier mais ça ne veut rien dire).

    Pour le retard de calcul dans le 2e champ j’ai déplacé le script dedans, en script de calcul, et ça fonctionne en temps réel (à chaque fois que le champ 1 perd le focus).

    Ci-joint.

    [attachment deleted by admin]

    #50093
    MichelAM
    Membre

    Le comptage avec la touche backspace est là uniquement pour vérifier l’action sur la dite touche (backspace) et cela ne fonctionne pas, vue que si je tappe un chiffre l’incrémentation augmente et que si je tape ensuite sur backspace, l’incrémentation continue à augmenter alors qu’elle devrait diminuer…? :mur:

    Mon principal intérêt est sur les zones 1 et 2, je veux que lorsque je rentre un chiffre dans la zone 1, la zone 2 se mette à jour sans quitter la zone 1 et que si je corrige cette même zone 1, la zone 2 se corrige également et le tout sans sortir de la zone 1…..
    (la dessus, une bonne aspirine et au lit…..)  :)

    A+
    MichelAM

    #50094
    alex
    Membre

    Rien de moins évident:
    Dans le champ où a lieu l’évènement déclencheur:
    Onglet Format>Catégorie de format: « Personnalisée » puis dans le champ Script de touches personnalisé,
    Saisir le script suivant:

    if(!event.willCommit)
    {
    //Prise en compte de la nouvelle valeur du champ activé
    nouvellevaleur=this.event.changeEx;
    //suite du script de calcul mettant à jour les autres champs à partir de nouvellevaleur.
    }
    Même méthode pour les autres champs déclencheurs…
    Bonsoir à tous.

    #50095
    Merlin
    Maître des clés

    Merci Alex !

    :bravo:

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