Partage
  • Partager sur Facebook
  • Partager sur Twitter

next() fonctionne au clic (suivant) sur IE

jquery

    27 novembre 2010 à 0:40:22

    Bonsoir,

    Je viens vous voir car j'ai un petit souci. Depuis quelques temps, je m'amuse avec mes formulaires en jquery.
    Je pensais que tout allait bien quand en testant sur IE, je me suis rendu compte d'un souci. En effet, la fonction next ne fonctionne pas sous IE. Du moins le texte que je dois afficher ne s'affiche que si je clique plusieurs fois ailleurs sur la page. Plutôt naze...

    A contrario, la fonction prev() fonctionne parfaitement. Auriez-vous une idée du problème ?
    Je vous montrer un exemple de chaque :

    <p>
    	<label for="agendaFormTitre">Titre <span class="champ-obligatoire">*</span></label>
    	<input type="text" id="agendaFormTitre" name="agendaFormTitre" class="neutral-i300 input-300" />
    	<span class="error-span-input"></span>
    </p>
    							
    <div>
    	<label for="agendaFormDescription">Description <span class="champ-obligatoire">*</span></label>
    	<p class="error-span-textarea"></p>
    	<textarea id="agendaFormDescription" name="agendaFormDescription" rows="" cols="" class="neutral-t400 textarea-400"></textarea>
    </div>
    


    Et mon jQuery :
    var agendaTitre = $('#agendaFormTitre'); //Déclaration des variables champs
    var agendaDescription = $('#agendaFormDescription');
    
    if(!$(agendaTitre).val()){
    	$(agendaTitre).removeClass(neutralInput300)
    	.addClass(errorInput300)
    	.next(errorSpanInput).text("Titre obligatoire");
    	valid = false;
    }
    		
    if(!$(agendaDescription).val()){
    	$(agendaDescription).removeClass(neutralTextarea400)
    	.addClass(errorTextarea400)
    	.prev(errorSpanTextarea).text("Description obligatoire");
    	valid = false;
    }
    


    Voici ce que j'obtiens sous FF, chrome, opera, safari, etc. :
    Image utilisateur

    D'ailleurs en cliquant sur reset, idem prev fonctionne parfaitement alors que next non, le texte d'erreur s'efface (car c'est le rôle) après plusieurs secondes d 'attente.

    Ça fonctionne nickel pour mon textarea, mais pas pour l'input.
    Merci d'avance pour votre aide précieuse :)

    Bonne nuit
    • Partager sur Facebook
    • Partager sur Twitter
      27 novembre 2010 à 9:00:49

      Salut,

      Que contiennent les variables errorSpanInput et errorSpanTextarea ?
      • Partager sur Facebook
      • Partager sur Twitter
      Directeur technique, créateur de jeux HTML5 et fan de JavaScript | La suite de OnHack est sur les rails !
        27 novembre 2010 à 12:35:47

        Ah j'ai oublié de te mettre la déclaration des variables :
        var errorSpanInput = '.error-span-input';
        var errorSpanTextarea = '.error-span-textarea';
        

        Merci à toi :)
        • Partager sur Facebook
        • Partager sur Twitter
          27 novembre 2010 à 12:44:41

          Aucun problème chez moi sous IE 7.

          Les deux textes apparaissent immédiatement.
          • Partager sur Facebook
          • Partager sur Twitter
            27 novembre 2010 à 12:52:28

            Dans mon souvenir, il y a toujours eu des petites ratées sur la fonction next() avec IE quand on utilise des classes.
            Je pense que remplacer
            .next(errorSpanInput)
            

            par
            .next('span')
            

            devrait améliorer les choses.

            Ca vient essentiellement du moteur JS de IE qui n'est pas très performant sur la recherche par classe. En recherchant plutôt une balise, il devrait moins galérer à parcourir le DOM, et donc exécuter le script plus rapidement.

            Enfin... j'espère :euh:
            • Partager sur Facebook
            • Partager sur Twitter
            Directeur technique, créateur de jeux HTML5 et fan de JavaScript | La suite de OnHack est sur les rails !
              27 novembre 2010 à 13:26:14

              Le truc c'est que j'ai pas de IE7 et 8 natifs... J'utilise le mode de compatibilité IE9. Ca peut venir de là le souci.
              Je vais tester le span tout de même :)

              Edit : Mettre span au lieu de la class ne change rien :(

              Edit 2 : En fait, je viens de remarquer que les messages s'affichent mais après plusieurs secondes d'attente.
              • Partager sur Facebook
              • Partager sur Twitter

              next() fonctionne au clic (suivant) sur IE

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown