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

JavaScript Discussion :

texte d'une option de select et  


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 44
    Points : 47
    Points
    47
    Par défaut texte d'une option de select et  
    Bonjour,

    J'ai le cas suivant :

    Je récupère depuis ma base de données un texte qui peut contenir plusieurs espaces consécutifs, je le place dans la zone de texte d'une option d'un select html. Pour voir affichés tous les espaces, je dois remplacer ' ' par ' ' pour interprétation correcte par le navigateur (ici IE6).

    Lorsque je clique sur la ligne de mon select (c'est un select multiple), le texte de l'option sélectionnée est recopié dans un champ textfield, pour édition.

    A ce moment-là se pose mon problème : je veux utiliser une fonction javascript qui remplace les espaces consécutifs par un seul espace (lors du onkeyup sur ce textfield).

    J'ai une fonction qui marche très bien tant que les espaces que je vois sur ma page correspondent à des espaces tapés par l'utilisateur (' ') mais en revanche ne marche pas si les espaces affichés ont été générés par ' '.

    Voici ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function formateChaineSuppDoublesEspaces(chaine) {
     var longueur = chaine.length;
      var resultat="";
     
      for (var i = 0; i < longueur; i++) {
          var caractere = chaine.charAt(i);
          var caracterePrec = chaine.charAt(i-1);
          if(!(caractere == " " && caracterePrec == " ")) {
            	resultat = resultat.concat(caractere);
          }
      }
      return resultat;
    }
    J'ai regardé, avec le débuggeur javascript de microsoft, à quoi correspondait en debug ma chaîne dans le option du select. A l'affichage je vois des espaces mais à la comparaison du caractère qui semble être un espace et de ' ' j'obtiens false.

    Est-ce que quelqu'un a une idée du code caractère correspondant à &nbsp; à utiliser pour le test ?

    Si je ne trouve pas, la solution sera d'utiliser des champs cachés avec pour valeur la chaîne issue de la base de données, sans remplacer ' ' par &nbsp;.

    Merci pour vos lumières,

    Barbara

  2. #2
    Membre régulier

    Inscrit en
    Septembre 2003
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 65
    Points : 82
    Points
    82
    Par défaut
    As-tu essayé avec une expression régulière sur ta chaine ?

    Par exemple ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var strInitiale = "mot1&nbsp;&nbsp;mot2&nbsp;mot3";
    var exp_reg1 = /&nbsp;(?=&nbsp;)/gi;
    var exp_reg2 = /&nbsp;/gi;
    var resultat1 = strInitiale.replace(exp_reg1, "");
    var resultat2 = resultat1.replace(exp_reg2, " ");
    alert(resultat2);
    devrait faire l'affaire.

  3. #3
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Tu as fait une grande fonction de ce qui pourrait être fait en deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function formateChaineSuppDoublesEspaces(chaine) {
       chaine = chaine.replace(/[ ]{1,}/g, " ");
       return chaine;
    }
    Maintenant, reste encore le problème du &nbsp; que je n'ai pas encore trouvé ...

  4. #4
    Membre régulier

    Inscrit en
    Septembre 2003
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 65
    Points : 82
    Points
    82
    Par défaut
    Voici un script qui fait les deux (les espaces et les &nbsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var strInitiale = "mot1&nbsp;&nbsp;mot2   mot3&nbsp;mot4";
    var exp_reg = /(&nbsp;| ){1,}/g;
    var resultat = strInitiale.replace(exp_reg, " ");
    alert(resultat);

  5. #5
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Citation Envoyé par ptit-lu
    Voici un script qui fait les deux (les espaces et les &nbsp; :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var strInitiale = "mot1&nbsp;&nbsp;mot2   mot3&nbsp;mot4";
    var exp_reg = /(&nbsp;| ){1,}/g;
    var resultat = strInitiale.replace(exp_reg, " ");
    alert(resultat);
    Ceci ne fonctionne que lorsque ta variable est définie en Javascript.

    Test :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" value="Truc" onclick="test('&nbsp;')" />

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function test(chaine){
       var truc = "&nbsp;";
       alert(chaine);
       alert(truc);
    }
    Les deux alerts ne donneront pas la même chose ...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 44
    Points : 47
    Points
    47
    Par défaut
    Ca y est ça marche, mais sans la regexp et avec ma méthode alternative : copier dans le champ textfield la chaîne 'mot mot2' (sauvegardé dans une Array) lorsque je sélectionne dans le select l'option 'mot&nbsp;&nbsp;mot2'.

    C'est quand même dingue que la valeur de l'attribut text d'une option de select subisse une telle transformation lorsqu'on la copie dans un textfield, les &nbsp; ne devenant ni des &nbsp; ni des espaces.

    Parce que la regexp ne marchait pas alors que j'étais bien avec une variable alimentée avec la valeur du textfield.

    Merci à tous.

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

Discussions similaires

  1. Select, Récupérer le texte d'une option
    Par medessad dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 04/08/2012, 14h28
  2. Réponses: 3
    Dernier message: 02/01/2010, 00h50
  3. Mise en page d'une option de select
    Par MistyMan dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 14/02/2009, 13h26
  4. Mise en page d'une option dans select
    Par MistyMan dans le forum Langage
    Réponses: 1
    Dernier message: 14/02/2009, 08h36
  5. récupérer le texte d'une option d'un select
    Par taka10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/10/2006, 18h47

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