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 :

Détecter un retour à la ligne avec JQUERY


Sujet :

jQuery

  1. #1
    Membre régulier
    Homme Profil pro
    Etudiant du Genie Logiciel
    Inscrit en
    Juillet 2011
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant du Genie Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 397
    Points : 73
    Points
    73
    Par défaut Détecter un retour à la ligne avec JQUERY
    salut,
    j'ai des chaines de caractère qui sont très longs, je voudrais couper chaque chaine au deuxième retour a la ligne de sorte que chaque chaine ne sois que sur deux lignes. le reste de la chaine ne sera affiché qu'au survol (hover) de la ligne avec la souris. comment m'y prendre pour détecter le retour a la ligne ?
    merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    à adapter : https://codepen.io/jreaux62/pen/jONaxNo
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <textarea>Hac ex causa conlaticia stipe Valerius humatur ille Publicola et subsidiis amicorum mariti inops cum liberis uxor alitur Reguli et dotatur ex aerario filia Scipionis, cum nobilitas florem adultae virginis diuturnum absentia pauperis erubesceret patris.
      Latius iam disseminata licentia onerosus bonis omnibus Caesar nullum post haec adhibens modum orientis latera cuncta vexabat nec honoratis parcens nec urbium primatibus nec plebeiis.
      Postremo ad id indignitatis est ventum, ut cum peregrini ob formidatam haut ita dudum alimentorum inopiam pellerentur ab urbe praecipites, sectatoribus disciplinarum liberalium inpendio paucis sine respiratione ulla extrusis, tenerentur minimarum adseclae veri, quique id simularunt ad tempus, et tria milia saltatricum ne interpellata quidem cum choris totidemque remanerent magistris.
      Accedebant enim eius asperitati, ubi inminuta vel laesa amplitudo imperii dicebatur, et iracundae suspicionum quantitati proximorum cruentae blanditiae exaggerantium incidentia et dolere inpendio simulantium, si principis periclitetur vita, a cuius salute velut filo pendere statum orbis terrarum fictis vocibus exclamabant.
      Restabat ut Caesar post haec properaret accitus et abstergendae causa suspicionis sororem suam, eius uxorem, Constantius ad se tandem desideratam venire multis fictisque blanditiis hortabatur. quae licet ambigeret metuens saepe cruentum, spe tamen quod eum lenire poterit ut germanum profecta, cum Bithyniam introisset, in statione quae Caenos Gallicanos appellatur, absumpta est vi febrium repentina. cuius post obitum maritus contemplans cecidisse fiduciam qua se fultum existimabat, anxia cogitatione, quid moliretur haerebat.
      Per hoc minui studium suum existimans Paulus, ut erat in conplicandis negotiis artifex dirus, unde ei Catenae inditum est cognomentum, vicarium ipsum eos quibus praeerat adhuc defensantem ad sortem periculorum communium traxit. et instabat ut eum quoque cum tribunis et aliis pluribus ad comitatum imperatoris vinctum perduceret: quo percitus ille exitio urgente abrupto ferro eundem adoritur Paulum. et quia languente dextera, letaliter ferire non potuit, iam districtum mucronem in proprium latus inpegit. hocque deformi genere mortis excessit e vita iustissimus rector ausus miserabiles casus levare multorum.
     
    </textarea>
    <div id="the_div"></div>
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    textarea { display:none; }
    #the_div .hide { display:none; }
    #the_div .more { display:block; color:green; }
    /* on affiche le reste du texte sur :hover */
    #the_div:hover .hide { display:block; color:red; }
    #the_div:hover .more { display:none; }
    Code JavaScript : 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
    $(function(){
      //  $('textarea').on('blur',function() {
      var text = $('textarea').val().trim(); // contenu à traiter
      var text_arr = text.split("\n");
      //   console.log( text_arr );
      if( text_arr.length>2) // si on a + de 2 lignes de texte
      {
        // ------------
        // affichage
        var the_div = $('#the_div');
        the_div.html(text_arr[0]+"<br/>"+text_arr[1]); // affiche les 2 première lignes
        // ------------
        var the_more_span = $('<span>'); // on crée un span
        the_more_span.addClass("more"); // avec la class "more"
        the_more_span.html('[...]');
        the_div.append(the_more_span);
        // ------------
        var texthide = text_arr.splice(2,2); // on supprime les 2 1ers (déja affichés)
        texthide = texthide.join("<br/>");
        the_div.append(the_hide_div);
        // ------------
        var the_hide_div = $('<div>'); // on crée un div
        the_hide_div.addClass("hide"); // avec la class "hide"
        the_hide_div.html(texthide);
        // -----
        the_div.append(the_hide_div);
      }
      //  });
    });
    Dernière modification par Invité ; 05/09/2019 à 13h01.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Une variante :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <textarea>Hac ex causa conlaticia stipe Valerius humatur ille Publicola et subsidiis amicorum mariti inops cum liberis uxor alitur Reguli et dotatur ex aerario filia Scipionis, cum nobilitas florem adultae virginis diuturnum absentia pauperis erubesceret patris.
      Latius iam disseminata licentia onerosus bonis omnibus Caesar nullum post haec adhibens modum orientis latera cuncta vexabat nec honoratis parcens nec urbium primatibus nec plebeiis.
      Postremo ad id indignitatis est ventum, ut cum peregrini ob formidatam haut ita dudum alimentorum inopiam pellerentur ab urbe praecipites, sectatoribus disciplinarum liberalium inpendio paucis sine respiratione ulla extrusis, tenerentur minimarum adseclae veri, quique id simularunt ad tempus, et tria milia saltatricum ne interpellata quidem cum choris totidemque remanerent magistris.
      Accedebant enim eius asperitati, ubi inminuta vel laesa amplitudo imperii dicebatur, et iracundae suspicionum quantitati proximorum cruentae blanditiae exaggerantium incidentia et dolere inpendio simulantium, si principis periclitetur vita, a cuius salute velut filo pendere statum orbis terrarum fictis vocibus exclamabant.
      Restabat ut Caesar post haec properaret accitus et abstergendae causa suspicionis sororem suam, eius uxorem, Constantius ad se tandem desideratam venire multis fictisque blanditiis hortabatur. quae licet ambigeret metuens saepe cruentum, spe tamen quod eum lenire poterit ut germanum profecta, cum Bithyniam introisset, in statione quae Caenos Gallicanos appellatur, absumpta est vi febrium repentina. cuius post obitum maritus contemplans cecidisse fiduciam qua se fultum existimabat, anxia cogitatione, quid moliretur haerebat.
      Per hoc minui studium suum existimans Paulus, ut erat in conplicandis negotiis artifex dirus, unde ei Catenae inditum est cognomentum, vicarium ipsum eos quibus praeerat adhuc defensantem ad sortem periculorum communium traxit. et instabat ut eum quoque cum tribunis et aliis pluribus ad comitatum imperatoris vinctum perduceret: quo percitus ille exitio urgente abrupto ferro eundem adoritur Paulum. et quia languente dextera, letaliter ferire non potuit, iam districtum mucronem in proprium latus inpegit. hocque deformi genere mortis excessit e vita iustissimus rector ausus miserabiles casus levare multorum.
     
    </textarea>
    <div id="the_div"></div>
    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    textarea { display:none; }
    #the_div .more { display:none; }
    /* on affiche le reste du texte sur :hover */
    #the_div:hover .more { display:block; color:red; }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $(function(){
      var text = $('textarea').val().trim(); // contenu à traiter
      var reg =/([^\n]+\n{2}).*/g;
      var text_arr = text.match(reg);
    console.log(text_arr);
     $("#the_div").html(text_arr[0] + '<div class="more">'+text_arr[1]+'</div>'); 
    });
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Invité
    Invité(e)
    Par défaut
    @SpaceFrog +1

    1- Petite correction (une parenthèse mal placée) :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
      var reg =/([^\n]+\n){2}.*/g;
    2- Attention aussi si le texte ne satisfait pas à la regex (s'il a moins de 2 passages à la ligne) : TypeError: text_arr is null

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $(function(){
      var text = $('textarea').val().trim(); // contenu à traiter
      reg =/([^\n]+\n){2}.*/g;
      var text_arr = text.match(reg);
      if( text_arr !== null )
      {
        $("#the_div").html(text_arr[0] + '<div class="more">'+text_arr[1]+'</div>'); 
      } else {
        $("#the_div").html(text);
      }
    });

  5. #5
    Membre régulier
    Homme Profil pro
    Etudiant du Genie Logiciel
    Inscrit en
    Juillet 2011
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant du Genie Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 397
    Points : 73
    Points
    73
    Par défaut
    salut,
    j'applique ton exemple avec du javascript, mais il ne "split" pas certaines chaines qui sont longues. il entre toujours dans le sinon alors que j'ai des chaines qui font plus de 2 lignes voir même 3 lignes. je voudrais comprendre. voici mon code :
    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
     
    if(objectsData[i].nearest_region != "" || objectsData[i].nearest_region != null){
      $("#object_address_" + i).html(objectsData[i].nearest_region);
      $("#object_address_" + i).css("display", "none");
    	if($("#object_address_" + i).text().trim()){
           var txt = $("#object_address_" + i).text().trim();
           var text_arr = txt.split("\n");
       if(text_arr.length>2){//si on a plus de 2 lignes de text
    	console.log("string 0  \t" + text_arr[0]);
    	console.log("string 1 \t" + text_arr[1]);
    	console.log("string 2 "\t + text_arr[2]);										             
    }else{
     console.log("else \t\t " + text_arr);
       }
     
    }
    }
    qu'est ce qui ne va pas avec mon code ? merci.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           var txt = $("#object_address_" + i).html().trim();
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           var text_arr = txt.split("<br/>"); // <br/> ? <br> ?
    ?

  7. #7
    Membre régulier
    Homme Profil pro
    Etudiant du Genie Logiciel
    Inscrit en
    Juillet 2011
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant du Genie Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 397
    Points : 73
    Points
    73
    Par défaut
    salut,
    sa ne resouds toujours pas mon problème. il ne "split" toujours pas. les chaines ne sont toujours pas coupées. merci.

  8. #8
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    Est- que le contexte d'affichage est dynamique ?

    Est-ce le texte affiché contient des balises html ou des caracteres spécaiux ( ex &nbsp; ) ?

    Dans le cas ou les réponses sont " non " pour les 2:
    Code html : 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
    <div id="texte_1">Hac ex causa conlaticia stipe Valerius humatur ille Publicola et subsidiis amicorum mariti inops cum liberis uxor alitur Reguli et dotatur ex aerario filia Scipionis, cum nobilitas florem adultae virginis diuturnum absentia pauperis erubesceret patris.
      Latius iam disseminata licentia onerosus bonis omnibus Caesar nullum post haec adhibens modum orientis latera cuncta vexabat nec honoratis parcens nec urbium primatibus nec plebeiis.
      Postremo ad id indignitatis est ventum, ut cum peregrini ob formidatam haut ita dudum alimentorum inopiam pellerentur ab urbe praecipites, sectatoribus disciplinarum liberalium inpendio paucis sine respiratione ulla extrusis, tenerentur minimarum adseclae veri, quique id simularunt ad tempus, et tria milia saltatricum ne interpellata quidem cum choris totidemque remanerent magistris.
      Accedebant enim eius asperitati, ubi inminuta vel laesa amplitudo imperii dicebatur, et iracundae suspicionum quantitati proximorum cruentae blanditiae exaggerantium incidentia et dolere inpendio simulantium, si principis periclitetur vita, a cuius salute velut filo pendere statum orbis terrarum fictis vocibus exclamabant.
      Restabat ut Caesar post haec properaret accitus et abstergendae causa suspicionis sororem suam, eius uxorem, Constantius ad se tandem desideratam venire multis fictisque blanditiis hortabatur. quae licet ambigeret metuens saepe cruentum, spe tamen quod eum lenire poterit ut germanum profecta, cum Bithyniam introisset, in statione quae Caenos Gallicanos appellatur, absumpta est vi febrium repentina. cuius post obitum maritus contemplans cecidisse fiduciam qua se fultum existimabat, anxia cogitatione, quid moliretur haerebat.
      Per hoc minui studium suum existimans Paulus, ut erat in conplicandis negotiis artifex dirus, unde ei Catenae inditum est cognomentum, vicarium ipsum eos quibus praeerat adhuc defensantem ad sortem periculorum communium traxit. et instabat ut eum quoque cum tribunis et aliis pluribus ad comitatum imperatoris vinctum perduceret: quo percitus ille exitio urgente abrupto ferro eundem adoritur Paulum. et quia languente dextera, letaliter ferire non potuit, iam districtum mucronem in proprium latus inpegit. hocque deformi genere mortis excessit e vita iustissimus rector ausus miserabiles casus levare multorum.
    </div>
     
    <br>
    <br>
     
    <div id="texte_2">Hac ex causa conlaticia stipe Valerius humatur ille Publicola et subsidiis amicorum mariti inops cum liberis uxor alitur Reguli et dotatur ex aerario filia Scipionis, cum nobilitas florem adultae virginis diuturnum absentia pauperis erubesceret patris.
      Latius iam disseminata licentia onerosus bonis omnibus Caesar nullum post haec adhibens modum orientis latera cuncta vexabat nec honoratis parcens nec urbium primatibus nec plebeiis.
      Postremo ad id indignitatis est ventum, ut cum peregrini ob formidatam haut ita dudum alimentorum inopiam pellerentur ab urbe praecipites, sectatoribus disciplinarum liberalium inpendio paucis sine respiratione ulla extrusis, tenerentur minimarum adseclae veri, quique id simularunt ad tempus, et tria milia saltatricum ne interpellata quidem cum choris totidemque remanerent magistris.
      Accedebant enim eius asperitati, ubi inminuta vel laesa amplitudo imperii dicebatur, et iracundae suspicionum quantitati proximorum cruentae blanditiae exaggerantium incidentia et dolere inpendio simulantium, si principis periclitetur vita, a cuius salute velut filo pendere statum orbis terrarum fictis vocibus exclamabant.
      Restabat ut Caesar post haec properaret accitus et abstergendae causa suspicionis sororem suam, eius uxorem, Constantius ad se tandem desideratam venire multis fictisque blanditiis hortabatur. quae licet ambigeret metuens saepe cruentum, spe tamen quod eum lenire poterit ut germanum profecta, cum Bithyniam introisset, in statione quae Caenos Gallicanos appellatur, absumpta est vi febrium repentina. cuius post obitum maritus contemplans cecidisse fiduciam qua se fultum existimabat, anxia cogitatione, quid moliretur haerebat.
      Per hoc minui studium suum existimans Paulus, ut erat in conplicandis negotiis artifex dirus, unde ei Catenae inditum est cognomentum, vicarium ipsum eos quibus praeerat adhuc defensantem ad sortem periculorum communium traxit. et instabat ut eum quoque cum tribunis et aliis pluribus ad comitatum imperatoris vinctum perduceret: quo percitus ille exitio urgente abrupto ferro eundem adoritur Paulum. et quia languente dextera, letaliter ferire non potuit, iam districtum mucronem in proprium latus inpegit. hocque deformi genere mortis excessit e vita iustissimus rector ausus miserabiles casus levare multorum.
    </div>

    Code Javascript : 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
    Set_X_lines('texte_1',2)
    Set_X_lines('texte_2',2)
     
    function Set_X_lines(ref_ID, nbVisible)
    {
      let leTexte = document.getElementById(ref_ID)
        , Txt_ref = leTexte.textContent.trim()
     
      leTexte.textContent = ''
     
      let txt_H  = leTexte.clientHeight
        , pos    = 0
        , Pesp   = 0
     
      while (nbVisible>=0 && pos < Txt_ref.length )
      {
        if (Txt_ref.charAt(pos)==' ') Pesp = pos
        leTexte.textContent += Txt_ref.charAt(pos++)
     
        if ( txt_H != leTexte.clientHeight)
        {
          txt_H = leTexte.clientHeight
          nbVisible--
        }
      }
     
      if (pos >= Txt_ref.length) return
     
      leTexte.textContent = Txt_ref.substring(0,++Pesp)
     
      let S1 = document.createElement('span')
        , S2 = document.createElement('span')
     
     
      S1.textContent = '\u00a0'.repeat(pos-Pesp) + ' [\u00a0+\u00a0]'
      S2.textContent = Txt_ref.substring(Pesp)
     
     
      S1.style.color   = 'red'
      S2.style.display = 'none' 
     
     
      leTexte.appendChild(S1)
      leTexte.appendChild(S2)
     
      S1.onmouseover =_=>
      {
        S1.style.display = 'none' 
        S2.style.display = 'inline' 
      }  
      S2.onmouseout =_=>
      {
        S1.style.display = 'inline' 
        S2.style.display = 'none' 
      }  
    }
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

Discussions similaires

  1. Gérer les retour à la ligne avec VBA (marge de droite)
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/09/2008, 18h33
  2. Retour à la ligne avec fichier à accès aléatoire
    Par mehdiyou dans le forum VB.NET
    Réponses: 11
    Dernier message: 29/04/2008, 14h57
  3. retour à la ligne avec une zone de texte
    Par samia21 dans le forum IHM
    Réponses: 10
    Dernier message: 28/04/2008, 16h28
  4. Retour à la ligne avec Form
    Par ClaudeP dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/05/2007, 08h42
  5. Problème retour à la ligne avec textarea
    Par finalfx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/05/2006, 18h59

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