Comment faire passer une variable d'une fonction a une autre
Résolu/Ferméflexi2202 Messages postés 3820 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 avril 2025 - 5 févr. 2023 à 19:36
- Comment faire passer une variable d'une fonction a une autre
- Fonction si et - Guide
- Passer de qwerty a azerty - Guide
- Passer a windows 10 - Accueil - Mise à jour
- Passer à la ligne dans une cellule excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
9 réponses
4 févr. 2023 à 14:10
Bonjour ,
Comme bien souvent, la solution se trouve avant tout dans la documentation.
Pour ton plugin, regarde ici :
regarde par exemple les deux méthodes : MR_SetParams et éventuellement ensuite MR_DoSearch
5 févr. 2023 à 18:08
//je recupere le cp $("#cp").on("input", function() { doSearch(); }); //je recupere le pays $("#pays").on("input", function() { doSearch(); }); function doSearch(){ let pays = $("#pays").val(); let cp = $("#cp").val(); //on défini des valaurs par défaut si les champs ne sont pas remplis : // pour ça, utilisation de l'écriture TERNAIRE pays = typeof(pays) !='undefined' && pays.length() > 1 ? pays : "BE"; cp = typeof(cp) !='undefined' && cp.length() > 4 ? pays : 6000; $("#Zone_Widget").trigger("MR_DoSearch", [cp, pays]); //change le code postal et le pays }
5 févr. 2023 à 18:28
Un tres grand merci jordane
comme toujours tu as une solution a tout
malheuresuement j'ai un message d'erreur
avec cette ligne
je comprends ce que tu as voulu faire
car d'apres la documentatio le ? serait un if
pays = typeof(pays) !='undefined' && pays.length() > 1 ? pays : "BE";
Uncaught TypeError: pays.length is not a function
5 févr. 2023 à 19:21
Oui c'est un IF/ELSE
Je veux tester que la variable existe et qu'il y a bien une valeur dedans. Si c'est le cas, on garde sa valeur.. sinon on lui met une valeur par défaut ( ici BE )
L'erreur vient du .length() ... il faut retirer les parenthèses .legnth
Modifié le 4 févr. 2023 à 14:43
bonjour Jordane
Merci pour le lien et la reponse
mais comme a chaque fois les explications ou presque els explications sur la documentation ont ete realise pour des experts
en fait ce qui m'interesse c'est de remplacer le 59510 et FR par ce que l'utilisateur entrera au clavier dans mon formulaire
ce morceau de code je l'avais vu
$("#Zone_Widget").trigger("MR_DoSearch",[59510,"FR"]);
dont on retrouve une similitude dans le code posté
car si je remplace
$("#Zone_Widget").MR_ParcelShopPicker
par
$("#Zone_Widget").trigger("MR_DoSearch",[59510,"FR"]);
cela ne regle pas mon soucis
j'ai essaye ceci
//<![CDATA[ //le code postal // Initialiser le widget après le chargement complet de la page $(document).ready(function () { //console.log(input); // Charge le widget dans la DIV d'id "Zone_Widget" avec les paramètres indiqués $("#Zone_Widget").MR_ParcelShopPicker({ // // Paramétrage de la liaison avec la page. // // Selecteur de l'élément dans lequel est envoyé l'ID du Point Relais (ex: input hidden) Target: "#Target_Widget", // Selecteur de l'élément dans lequel est envoyé l'ID du Point Relais pour affichage TargetDisplay: "#TargetDisplay_Widget", // Selecteur de l'élément dans lequel sont envoysé les coordonnées complètes du point relais TargetDisplayInfoPR: "#TargetDisplayInfoPR_Widget", // // Paramétrage du widget pour obtention des point relais. // // Le code client Mondial Relay, sur 8 caractères (ajouter des espaces à droite) // BDTEST est utilisé pour les tests => un message d'avertissement apparaît Brand: "BDTEST ", // Pays utilisé pour la recherche: code ISO 2 lettres. Country: "FR", // Code postal pour lancer une recherche par défaut PostCode: "59510", // PostCode: input , // Mode de livraison (Standard [24R], XL [24L], XXL [24X], Drive [DRI]) ColLivMod: "24R", // Nombre de Point Relais à afficher NbResults: "7", // // Paramétrage d'affichage du widget. // // Activer l'affichage Responsive. Responsive: true, // Afficher les résultats sur une carte? ShowResultsOnMap: false, // Afficher les informations du point relais à la sélection sur la carte? DisplayMapInfo: true, // Fonction de callback déclenché lors de la selection d'un Point Relais OnParcelShopSelected: // Fonction de traitement à la sélection du point relais. // Remplace les données de cette page par le contenu de la variable data. // data: les informations du Point Relais function (data) { //span // $("#cb_ID").html(data.ID); // $("#cb_Nom").html(data.Nom); //$("#cb_Adresse").html(data.Adresse1 + ' ' + data.Adresse2); // $("#cb_Adresse").html(data.Adresse1); // $("#cb_CP").html(data.CP); // $("#cb_Ville").html(data.Ville); // $("#cb_Pays").html(data.Pays); //input hidden $("[name='IDmondial']").val(data.ID); $("[name='NOMmondial']").val(data.Nom); //$("[name='ADRESSEmondial']").val(data.Adresse1 + ' ' + data.Adresse2); $("[name='ADRESSEmondial']").val(data.Adresse1); $("[name='CPmondial']").val(data.CP); $("[name='VILLEmondial']").val(data.Ville); $("[name='PAYSmondial']").val(data.Pays); }, // // Autres paramétrages. // //Filtrer les Points Relais selon le Poids (en grammes) du colis à livrer //Weight: "2000", // Spécifier le nombre de jours entre la recherche et la dépose du colis dans notre réseau // SearchDelay: "3", //Limiter la recherche des Points Relais à une distance maximum //SearchFar: "", // Liste des pays selectionnable par l'utilisateur pour la recherche: codes ISO 2 lettres AllowedCountries: "FR,BE,NL,LU", // Force l'utilisation de Google Map si la librairie est présente? // EnableGmap: true, // Activer la recherche de la position lorsque le navigateur de l'utilisateur le supporte? // EnableGeolocalisatedSearch: "true", // Spécifier l'utilisation de votre feuille de style CSS lorsque vous lui donnez la valeur "0" // CSS: "1", // Activer le zoom on scroll sur la carte des résultats? //,MapScrollWheel: "false", // Activer le mode Street View sur la carte des résultats (attention aux quotas imposés par Google) // MapStreetView: "false" }); $("#Zone_Widget").trigger("MR_DoSearch",[6000,"BE"]); }); //]]>
4 févr. 2023 à 16:15
Je t'ai donné deux méthodes ... en te disant .. déjà l'une .... puis éventuellement la seconde...
Ce qui sous entend que la première à essayer de mettre en pratique ... c'est bien la première.... c'est pas la seconde.... :-)
En gros , ça devrait ressembler à ça :
$(document).ready(function () { // Quand la page est chargée ... // Initialiser le widget après le chargement complet de la page // !! NE PAS TOUCHER A CETTE PORTION CODE PAR LA SUITE !! // // Charge le widget dans la DIV d'id "Zone_Widget" avec les paramètres indiqués $("#Zone_Widget").MR_ParcelShopPicker({ // // Paramétrage de la liaison avec la page. // // Selecteur de l'élément dans lequel est envoyé l'ID du Point Relais (ex: input hidden) Target: "#Target_Widget", // Selecteur de l'élément dans lequel est envoyé l'ID du Point Relais pour affichage TargetDisplay: "#TargetDisplay_Widget", // Selecteur de l'élément dans lequel sont envoysé les coordonnées complètes du point relais TargetDisplayInfoPR: "#TargetDisplayInfoPR_Widget", // // Paramétrage du widget pour obtention des point relais. // Le code client Mondial Relay, sur 8 caractères (ajouter des espaces à droite) // BDTEST est utilisé pour les tests => un message d'avertissement apparaît Brand: "BDTEST ", // Pays utilisé pour la recherche: code ISO 2 lettres. Country: "BE", // Code postal pour lancer une recherche par défaut PostCode: "6000", // Mode de livraison (Standard [24R], XL [24L], XXL [24X], Drive [DRI]) ColLivMod: "24R", // Nombre de Point Relais à afficher NbResults: "7", // // Paramétrage d'affichage du widget. // Activer l'affichage Responsive. Responsive: true, // Afficher les résultats sur une carte? ShowResultsOnMap: false, // Afficher les informations du point relais à la sélection sur la carte? DisplayMapInfo: true, // Fonction de callback déclenché lors de la selection d'un Point Relais OnParcelShopSelected: // Fonction de traitement à la sélection du point relais. // Remplace les données de cette page par le contenu de la variable data. // data: les informations du Point Relais function (data) { //span // $("#cb_ID").html(data.ID); // $("#cb_Nom").html(data.Nom); //$("#cb_Adresse").html(data.Adresse1 + ' ' + data.Adresse2); // $("#cb_Adresse").html(data.Adresse1); // $("#cb_CP").html(data.CP); // $("#cb_Ville").html(data.Ville); // $("#cb_Pays").html(data.Pays); //input hidden $("[name='IDmondial']").val(data.ID); $("[name='NOMmondial']").val(data.Nom); //$("[name='ADRESSEmondial']").val(data.Adresse1 + ' ' + data.Adresse2); $("[name='ADRESSEmondial']").val(data.Adresse1); $("[name='CPmondial']").val(data.CP); $("[name='VILLEmondial']").val(data.Ville); $("[name='PAYSmondial']").val(data.Pays); }, // // Autres paramétrages. //Filtrer les Points Relais selon le Poids (en grammes) du colis à livrer //Weight: "2000", // Spécifier le nombre de jours entre la recherche et la dépose du colis dans notre réseau // SearchDelay: "3", //Limiter la recherche des Points Relais à une distance maximum //SearchFar: "", // Liste des pays selectionnable par l'utilisateur pour la recherche: codes ISO 2 lettres AllowedCountries: "FR,BE,NL,LU", // Force l'utilisation de Google Map si la librairie est présente? // EnableGmap: true, // Activer la recherche de la position lorsque le navigateur de l'utilisateur le supporte? // EnableGeolocalisatedSearch: "true", // Spécifier l'utilisation de votre feuille de style CSS lorsque vous lui donnez la valeur "0" // CSS: "1", // Activer le zoom on scroll sur la carte des résultats? //,MapScrollWheel: "false", // Activer le mode Street View sur la carte des résultats (attention aux quotas imposés par Google) // MapStreetView: "false" }); // --- FIN INITIALISATION DU WIDGET ---------// //------------------------------------------------------------------------------// // +++++++ ICI .. tu codes pour prendre en compte les modifications du formulaire +++++ // //------------------------------------------------------------------------------// // Lorsque l'utilisateur modifie le contenu du champ CP : $("#cp").on("input",function(){ let cp = $(this).val(); //tu fais du jquery.. autant le faire partout ! console.log('cp',cp); $("#Zone_Widget").trigger("MR_SetParams",{PostCode: cp }) //change le code postal }); });
Modifié le 4 févr. 2023 à 18:02
Merci jordane pour le code
Mais malheureusement celui ci retourne bien la valeur de cp dans la sonsole mais pas dans le champ de mondial relay
j'ai donc repris l'autre methode
mais j'ai une erreur de syntaxe que je ne comprends pas
pour commencer voici mon code
$("#cp").on("input",function(){ let cp = $(this).val(); //tu fais du jquery.. autant le faire partout ! console.log('cp',cp); // $("#Zone_Widget").trigger("MR_SetParams",{PostCode: cp }) //change le code postal $("#Zone_Widget").trigger("MR_DoSearch",[PostCode: cp ,"FR"]); });
vient ensuite le message d'erreur dans la console
Uncaught SyntaxError: missing ] after element list
qui me dit qu'il manque quelque chose dans la ligne
un crochet ou une virgule
Mais franchement mieux que du copier coller de chez mondail relay je sais pas faire
4 févr. 2023 à 18:09
ah de cette facon cela fonctionne apparement
$("#cp").on("input",function(){ let cp = $(this).val(); //tu fais du jquery.. autant le faire partout ! console.log('cp',cp); // $("#Zone_Widget").trigger("MR_SetParams",{PostCode: cp }) //change le code postal $("#Zone_Widget").trigger("MR_DoSearch",[ cp ,"FR"]); });
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié le 4 févr. 2023 à 18:34
par contre lorsque je veux aussi recuperer le pays je dois avoir une erreur dans mes fonctions
Pourtant d'apres ce que j'ai pu remarquer je peux mettre une fonction dans une autre fonction
//je recupere le cp $("#cp").on("input", function() { let cp = $(this).val(); console.log('cp', cp); //je recupere le pays $("#pays").on("input", function() { let pays = $(this).val(); console.log('pays', pays); $("#Zone_Widget").trigger("MR_DoSearch", [cp, pays]); //change le code postal et le pays }); });
Modifié le 4 févr. 2023 à 18:42
Meme en modifiant cette ligne
$("#Zone_Widget").trigger("MR_DoSearch",[cp,"BE"]);
j'ai toujours le drapeau francais ; ce qui signifie que le choix par defaut est toujours la france
meme si dans le code du plugin j'indique ceci
Country: "",
par contre si j'indique ceci dans le code de la fonction du plgin
j'ai le drapeau belge ce qui indique que j'ai bien cette fois par defaut la Belgique
Country: "BE",
4 févr. 2023 à 18:55
En fait le drapeau ne sert a rien
par contre le code suivant semble fonctionner
//je recupere le cp $("#cp").on("input", function() { let cp = $(this).val(); console.log('cp', cp); //je recupere le pays $("#pays").on("input", function() { let pays = $(this).val(); console.log('pays', pays); $("#Zone_Widget").trigger("MR_DoSearch", [cp, pays]); //change le code postal et le pays }); });
je continue les tests demain
encore merci Jordane
Modifié le 5 févr. 2023 à 12:58
bonjour
Voila j'ai fini mes tests et la seule maniere pour que cela fonctionne est de recuperer cp et pays lors de la validation des donnees
Car en temps reel cela ne fonctionne pas trop bien
voici ce qui se passe par exemple avec ce code
//je recupere le cp $("#cp").on("input", function() { let cp = $(this).val(); console.log('cp', cp); //je recupere le pays $("#pays").on("input", function() { let pays = $(this).val(); console.log('pays', pays); $("#Zone_Widget").trigger("MR_DoSearch", [cp, pays]); //change le code postal et le pays }); });
lorsque je rentre les donnees du code postal et du pays
cela fonctionne
Mais si je modifie le code postal
le code postal ne se modifie que si je modifie le pays
Bref cela risque de mettre le bazar
ou alors je dois passer mon temps avec des conditions du style
on entre d'abord le code postal puis le pays
si on modifie le code postale on doit remettre le pays
le seul moyen que j'ai trouve c'est de recuperer pays et cp lors de al validation de ms deux input dans mon formulaire
5 févr. 2023 à 16:54
Ben il faut séparer la détection de la saisie sur le code postal de la saisie sur la ville...
Toi tu as regroupé tout le code dans celui du code postal...
Modifié le 5 févr. 2023 à 17:21
bonjour Jordane
Merci pour l'aide
j'ai essaye ce code mais de cette facon
Dans le champ input de cp apparait bien le code postal puis BE par exemple
j'ai essaye avec deux codes differents
//je recupere le cp $("#cp").on("input", function() { let cp = $(this).val(); console.log('cp', cp); $("#Zone_Widget").trigger("MR_DoSearch", [cp ,""]); //change le code postal et le pays }); //je recupere le pays $("#pays").on("input", function() { let pays = $(this).val(); console.log('pays', pays); $("#Zone_Widget").trigger("MR_DoSearch", ["",pays]); //change le code postal et le pays });
//je recupere le cp $("#cp").on("input", function() { let cp = $(this).val(); console.log('cp', cp); $("#Zone_Widget").trigger("MR_DoSearch", [cp ]); //change le code postal et le pays }); //je recupere le pays $("#pays").on("input", function() { let pays = $(this).val(); console.log('pays', pays); $("#Zone_Widget").trigger("MR_DoSearch", [pays]); //change le code postal et le pays });
puis j'ai essaye avec ceci et dans ce cas de figure rien ne s'indique dans les champs input
//je recupere le cp $("#cp").on("input", function() { let cp = $(this).val(); console.log('cp', cp); //$("#Zone_Widget").trigger("MR_DoSearch", [cp ,""]); //change le code postal et le pays $("#Zone_Widget").trigger("MR_SetParams",{PostCode: cp}) }); //je recupere le pays $("#pays").on("input", function() { let pays = $(this).val(); console.log('pays', pays); //$("#Zone_Widget").trigger("MR_DoSearch", ["",pays]); //change le code postal et le pays $("#Zone_Widget").trigger("MR_SetParams",{Country : pays}) });
5 févr. 2023 à 19:36
Ah d'accord merci pour la correction je n'ai plus d'erreur
Mais il ne refuse de prendre les donnees que j'introduis dans les champs input
il prends les valeurs par defaut
Par contre si je mets en commentaire les lignes avec els valeurs par defauts , tout semble bien fonctionner
encore un super grand merci jordane