IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Exécution javascript - Ajax - Chargement de la page


Sujet :

jQuery

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Par défaut Exécution javascript - Ajax - Chargement de la page
    Bonjour/Bonsoir à tous,

    J'ai une jsp contenant du javascript et de l'ajax (une histoire de drag & drop).

    Un utilisateur doit choisir un nombre d'options définis (nous connaissons cette valeur). Pour choisir ces options nous avons une liste (ce mot, uniquement pour imager) A et il fait glisser ses options dans la liste B.

    Une fois que ses choix sont fait, il valide (logique non ?).

    Mon gros problème est que le javascript ne s’exécute pas au chargement de la page ! La première fois ... Si j'actualise la page et refait mes choix, le javascript fonctionne bien ! Je ne comprends vraiment pas pourquoi ...

    Les scripts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <script>
    $(function() {
    	$( "ol.droptrue" ).sortable({
    		connectWith: "ol"
    	});
     
    	$( "#sortable1, #sortable2" ).disableSelection();
    });
    </script>
    <script language="javascript">
    jQuery(document).ready(function($){
        $('li').click(function(){
            var content = $("li:hover").attr("id");
            if (content == null) {
                document.getElementById('descriptionUE').innerHTML = "<b>Cliquez sur une UE pour voir sa description.</b>";
            } else {
                document.getElementById('descriptionUE').innerHTML = "<b>Description de l'UE: " + $("li:hover").html() + "</b> <br/><br/>" + content;
            }
        });
    });
    </script>
    <script type="text/javascript">
    var pos = [];
    function afficherPos(){
        var s = "";
        for(var i = 0; i < pos.length; ++i){
            s += pos[i] + "/";
        }
        s += " ";
        $("#affiche").html(s);
        document.getElementById("choixEtudiant").value = document.getElementById("affiche").innerHTML;
    }
    function maListe(idname) {
        var obj = $("#"+idname);
        obj.sortable({
            placeholder : 'ui-state-highlight',
            cursor : 'crosshair',
            revert : true,
            update : function(){
                pos = obj.sortable('toArray');
                afficherPos();
            }
        });
        obj.disableSelection();
    }
    $(document).ready(function(){
        maListe("sortable2");
    });
    function verifierChoix() {
        var nbChoix = document.getElementById("choixEtudiant").value.split("/").length;
        var nbUEAChoisir = ${nbUEAChoisir};
        if (nbChoix == nbUEAChoisir + 1) {
            return true;
        }
        else {
            alert("Vous devez choisir " + nbUEAChoisir + " UE !");
            return false;
        }
    }
    window.onload = verifierChoix();
    $(document).ready(function(){
        verifierChoix();
    });
    </script>
    Et une partie du code de la jsp

    Code jsp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <form method="post" action="consultationChoixEtudiant.html" onsubmit="return verifierChoix()">
     
    	<div class="span4">
    		<div class="well-white" style="height:250px">
    			<div class="lesUE" >
    				<div class="label label-info">Les UE proposées: </div><br/>
    				<ol id="sortable1" class='droptrue'>
    					<c:set var="testVar" value="0" scope="page" />
    					<c:set var="testVal" value="0" scope="page" />
    					<c:forEach items="${lesListes['lesUEProposees']}" var="UE">
    						<c:forEach items="${lesUEAff}" var="LUEAff">
    							<c:if test="${UE.idUE eq LUEAff.idUE}">
    								<c:set var="testVar" value="1"/>
    							</c:if> 
    						</c:forEach>
    						<c:forEach items="${lesUEValidees}" var="lUEV">
    							<c:if test="${UE.idUE eq lUEV.idUE}">
    								<c:set var="testVal" value="1"/>
    							</c:if>
    						</c:forEach>
    						<c:if test="${testVar==0}">
    							<c:if test="${testVal==0}">
    								<li class="info" id="${UE.description }"><i class="icon-list"></i>${UE.idUE}<span>${UE.description }</span></li>
    							</c:if>
    						</c:if>
    						<c:set var="testVar" value="0"/>
    						<c:set var="testVal" value="0"/>
    					</c:forEach>
    				</ol>
    			</div>
    		</div>
    	</div>
    	<div class="span4">
    		<div class="well-white" style="height:250px">
    			<div class="lesUE" >
    				<div style="display:none" id="affiche"></div>
    				<input name="choixEtudiant" type="hidden"  id="choixEtudiant"></input>
    				<div class="label label-info">Vos choix: </div><br/>
    				<ol id="sortable2" class='droptrue'>
    				</ol>
    			</div>
    		</div>
    	</div>
    </div>
    <br/><br/>
    <div id="validerChoix">
    	<input type="submit" class="btn btn-info" value="Valider mes choix">(Attention, vous ne pourrez plus les modifier !)</input> 
    </div>
    </form>

    Un grand merci à tous ceux qui auront pris le temps de me lire ... Si vous avez des idées, je suis plus que preneur

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    regroupes toutes tes fonctions dans une seule que tu appeleras une fois le dom chargé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    jQuery(document).ready(function($){
    activateDragAndDrop();
    ...
    });
     
    function activateDragAndDrop(){
    $( "ol.droptrue" ).sortable({
    		connectWith: "ol"
    	});
     
    	$( "#sortable1, #sortable2" ).disableSelection();
    }

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Par défaut
    Merci pour ta réponse.

    Malheureusement, j'ai fait ce que tu as dit, mais ça "annule" le drag & drop et ne résous pas ce fameux problème [Ou alors, j'ai mal compris, et je suis mauvais ]

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    peux tu poster le code HTML généré ??

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Par défaut
    C'est bon, j'ai résolu mon problème !

    Pour être honnête, ce code a été pondu par mon binôme, qui n'arrivait pas à trouver où ça clochait ..

    J'ai viré toutes ces centaines de balise 'script' et mis des ; à la fin des fonctions. Et modifié une variable transmise par le contrôleur

    Merci de ton intérêt le_chomeur :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécution du script "javascript" au chargement de la page JSP
    Par FuneralRose dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/05/2012, 12h13
  2. activer effet javascript au chargement de la page
    Par amoric69 dans le forum jQuery
    Réponses: 1
    Dernier message: 24/02/2011, 15h09
  3. [AJAX] Ajax :chargement d'une page
    Par Laorra dans le forum AJAX
    Réponses: 2
    Dernier message: 11/06/2009, 19h12
  4. [Javascript/AJAX] Chargement, Synchronisation et informations perdues
    Par bthivent dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 07/03/2009, 00h00
  5. Exécution javascript post chargement
    Par tomaa dans le forum jQuery
    Réponses: 3
    Dernier message: 16/01/2009, 12h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo