11521 sujets

JavaScript, DOM et API Web HTML5

bonjour a tous

je continue a faire mon petit bonhomme de chemin avec javascript et meme si j'ai super dur

je continue a persister

je peux dire que grace a ce forum j'ai vraiment beaucoup evolué mais je beug encore sur des petites choses

Mon defit du jour est de faire passer une variable d'une fonction dans une autre fonction

pour ce faire je m'attaque au widjet de mondial relay

par defaut il nous donne un pays et un code postal

je souhaiterais donc pouvoir avoir ces valeurs par defaut lorsque l'utilisateur entrera sa ville et son pays

Par exemple

si l'utilisateur choisi charleroi et belgique,que la valeur par defaut soit charleroi et belgique

Pour l'exemple je commence par le code postal

voici la partie html
<input class="form-control" type="text" name="cp" value="" id="cp"  required="required" />


ensuite la partie avec la fonction qui va recuperer la valeur de l'input
          var input ;
//le code postal
$(function(){
  $("#cp").on("input",function(){
    input=this.value;
    console.log(input);

  });
});


ensuite viens la fonction de mondial Relais dans laquelle je souhaiterais lui faire passer la variable input

j'ai essaye ce code , cela fonctionne mais alors mon widjet ne s'affiche plus correctement

le widjet est appelle comme ceci
<div id="Zone_Widget"></div>


  var input ;
//le code postal
$(function(){
  $("#cp").on("input",function(){
    input=this.value;
    console.log(input);

            
                   
               
                // 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: "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"
                    });
                });

  });
});
Salut,

je pige pas bien ce que tu veux faire.
Pourquoi ta fonction du début se ferme tout en bas Smiley ohwell ?

A priori ce bout de code la il doit se fermer pour être comme ça :

$("#cp").on("input",function(){
    input=this.value;
    console.log(input);
  });


Quand il y a un input dans "cp" tu fais quelque chose (la tu stock la valeur dans ta variable global "input"). Et c'est cette fonction qu'il faut améliorer pour faire ce qu'il faut.
Et a priori ce qu'il faut faire c'est indiqué dans la doc ici : https://widget.mondialrelay.com/parcelshop-picker/v4_0/codesamples/Sample-LightImplementation.aspx :
    $("#Zone_Widget").trigger("MR_DoSearch",[59510,"FR"]);   

En gros il doit juste falloir remplacer le "59510" de l'exemple par this.value je dirais.

L'autre bout de code après a priori il faut le laisser tranquille vu qu'il est utilisé à l'initialisation du widget j'ai l'impression
bonjour
Merci de la reponse
en effet avec la documentation je me suis debrouillé

$("#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
}