abracadabraPDF › Forums › PDF – Général › Obtenir un nombre entier (arrondi) dans un champ
- Ce sujet est vide.
-
CréateurSujet
-
6 février 2017 à 17:44 #45592Alpha47Membre
Salut à tous,
un problème simple, une solution simple
Dans mon formulaire, j’ai un champ A (nombre) calculé automatiquement en fonction de valeurs saisies
Dans le champ B (nombre) remplissable :
– si le nombre saisi est inférieur à A, rien (passage au champ suivant)
– si le nombre et supérieur à A, affichage de A + message “vous en avez trop demandé”Est-ce possible en JavaScript et où le placer en validation ou calcul ?
Oui je suis nul mais je vais certainement comprendre le script proposé !Merci d’avance.
-
CréateurSujet
-
AuteurRéponses
-
6 février 2017 à 18:56 #62217bebarthMaître des clés
bonjour,
A mettre en script de validation du champ B :Code:if(this.event.value > this.getField(“champA”).value) {
app.alert({cMsg:”Vous en avez trop demandé !”, nIcon:2});
this.event.value=””;
this.getField(“champB”).setFocus();
}@+
:bonjour:7 février 2017 à 09:47 #62218Alpha47MembreBonjour bebarth
Ta réponse est parfaite mais je n’avais pas tout dit … (mea culpa, mea culpa, …)
Mon formulaire vient d’un version Excel où on utilise couramment les arrondis (quand ça nous arrange) du type ARRONDI((B12*4+4)/10;0) qui définit aussi le nombre de valeur après la virgule.
Mon champ A est évidemment le résultat d’un calcul qui donne par exemple 2,80. Alors le champ en forme nombre m’affiche bien 0 décimale, mais pour les calculs et utilisation dans les calculs le javascript utilise la valeur avec décimale.
Donc pour mon problème, je souhaite arrondir le résultat de mon calcul dans le champ A, parce que un choix de 3 est trop grand pour 2,8 …
La question est encore plus bête que la première :geek: C’est quoi la formule magique ? :Smiley08: :Smiley08:
Merci d’avance7 février 2017 à 12:03 #62219MerlinMaître des clésCode:Math.round(n * 100) / 100;7 février 2017 à 13:01 #62220bebarthMaître des clés…pas mieux !
@+
:bonjour:7 février 2017 à 13:10 #62221MerlinMaître des clésCe monsieur nous explique pourquoi c’est mieux de faire autrement mais je ne suis pas certain d’avoir tout compris. :geek:
http://www.jacklmoore.com/notes/rounding-in-javascript/7 février 2017 à 14:18 #62222Alpha47Membreje me suis probablement mal expliqué sur mon objectif
L’explication de jacklmore est lumineuse évidement, :doute: et j’en suis aveuglé … je plaisante !
Pardonnez mon incompétence, comment rédiger mon calcul de B pour obtenir un arrondi sans valeur après la décimale ?if( this.getField(“C”).value>=1)
{this.event.value = ((this.getField(“C”).value*4+4)/10);}
else
{this.event.value=””;}
if (event.value == “0”) {event.value = “”}Sur mon formulaire si C = 6, il m’affiche bien l’entier 3 (format Nombre sans décimal), mais en passant la souris dessus, il me montre que le résultat du calcul est 2,8 et pour la suite lorsque je demande 3 pour A, il me dit’ vous avez trop demandé’ (voir post initial en dessous résolu par bebarth)
Est-ce mieux dit ? :jerisjaune:
Merci d’avance à tous les deux7 février 2017 à 17:46 #62223bebarthMaître des clésbonjour,
La problématique exposée par ce “Monsieur” est exacte ! La solution aussi puisqu’elle fonctionne…
Si on veut arrondir un nombre à deux décimales, on doit regarder la valeur de la troisième décimale : si cette troisième décimale est supérieure ou égale à 5, la deuxième décimale doit être incrémentée.
En ce qui concerne les exponentiels, c’est un peu loin pour moi et je lui fait confiance vu que sa formule fonctionne…En ce qui concerne le problème d’Alpha47, je suis un peu perdu avec les champs “A”, “B” ou “C” et ce qu’il faut faire avec…
J’ai donc fait un mélange, et j’espère qu’avec ces exemples il pourra faire exactement ce qu’il veut !
La formule “round” est en script de document.
@+
:bonjour:7 février 2017 à 17:56 #62224MerlinMaître des clésje suis un peu perdu avec les champs “A”, “B” ou “C” et ce qu’il faut faire avec…
Merci, du coup je me sens moins seul. :geek:
7 février 2017 à 18:15 #62225Alpha47MembreVous êtes vraiment super.
je crois que la bonne question eut été : quelle est la façon d’obtenir un nombre arrondi après un calcul ?
bebarth m’a révélé la fonction round et son emploi dans les exemples judicieux, merci merci :Smiley01: :Smiley01:
A bientôt8 février 2017 à 10:41 #62226Alpha47MembreEncore moi ! Mon enthousiasme d’hier soir a été douché ce matin au moment de la mise en œuvre sur mon formulaire :Smiley02: :mur:
Ja travaille sur Acrobat Pro 10.1.6 sur Mac
Le formule round ne fonctionne pas sur mon formulaire mais parfaitement sur ton formulaire bebarth
Une fois la formule round en place sur mon formulaire, Acrobat refuse de me renvoyer quoi que ce soit, même sur des champs nouveaux propres nouvellement créés pour tester
Alors je me suis rabattu sur la formule initialement proposée “Math.round (n*100/100)” (que je ne savais pas introduire) et là EUREKA :extra: :extra: (je n’étais pas dans mon bain!) la valeur renvoyée est bien un entier sur mon formulaire !
Tout fonctionne bien dans la fourchette de valeur que j’utilise.
Je vous laisse le soin d’apporter une réponse éventuelle au dysfonctionnement sur mon ordi
NB suggestion : la titre de la discussion devrait être “Obtenir un entier dans un champ”
Très très cordialement pour votre aide :bravo:8 février 2017 à 10:55 #62227MerlinMaître des clésJe ne comprend pas, ça fonctionne ou ça ne fonctionne pas ?
:Euuuh: :doute: :Euuuh:NB suggestion : la titre de la discussion devrait être “Obtenir un entier dans un champ”
On est bien d’accord mais avec SMF changer le titre d’un sujet doit se faire dans chaque message, message par message… :tutut:
Alors on va garder l’actuel. :Smiley03:8 février 2017 à 10:58 #62228MerlinMaître des clésSalut à tous,
un problème simple, une solution simple
Dans mon formulaire, j’ai un champ A (nombre) calculé automatiquement en fonction de valeurs saisies
Dans le champ B (nombre) remplissable :
– si le nombre saisi est inférieur à A, rien (passage au champ suivant)
– si le nombre et supérieur à A, affichage de A + message “vous en avez trop demandé”Est-ce possible en JavaScript et où le placer en validation ou calcul ?
Oui je suis nul mais je vais certainement comprendre le script proposé !Merci d’avance.
8 février 2017 à 11:02 #62229Alpha47MembreOui Merlin, c’est OK pour moi,ça fonctionne avec Math.round merci :joker:
8 février 2017 à 11:31 #62230bebarthMaître des clésbonjour,
Le formule round ne fonctionne pas sur mon formulaire mais parfaitement sur ton formulaire bebarth
A mon avis tu n’as pas placé la fonction en script de document…
Tu peux également la placer au début de ton script de calcul :Code:function round(value, decimals) {
return Number(Math.round(value+’e’+decimals)+’e-‘+decimals);
}
if(this.getField(“champC”).value>=1) {
this.event.value = round((this.getField(“champC”).value*4+4)/10,0);
} else {
this.event.value=””;
}
if (event.value == “0”) {event.value = “”}@+
:bonjour:8 février 2017 à 13:35 #62231MerlinMaître des clésAlors on va garder l’actuel.
Comme seuls les imbéciles ne changent pas d’avis et comme je viens de me rendre compte que le nouvel habillage du forum ne répète pas le titre sur chaque message je l’ai changé quand même.
:geek:8 février 2017 à 13:51 #62232Alpha47MembreBravo Melin, c’est mieux sans nul doute
Bonjour bebarth,
je vois que tu es aussi perfectionniste que moi :Smiley01:
Effectivement j’ai juste fait un copier/coller du script sans les deux premières lignes du code proposé = je vais essayerTu parles d’un script de document
Je ne crois pas que ce soit judicieux de mettre ce code en script document parce que seuls un ou deux champs sont concernés, mais à propos où placer ce script de document pour, par exemple, afficher un champ particulier à l’ouverture du document avec set.Focus() ?
cordialement8 février 2017 à 13:54 #62233MerlinMaître des clésoù placer ce script de document… ?
“Script de document” c’est l’emplacement.
Il faut ajouter ta ligne de script après la déclaration des fonctions. -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.