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 :

Réécriture champ texte pour mise en forme url [RegExp]


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Webmaster
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut Réécriture champ texte pour mise en forme url
    Bonjour à tous,

    C'est vraiment en cas d'extrême limite que je me résous à poster dans un forum, la plupart du temps en parcourant internet je trouve les réponse à mes questions. Mais là, non, je sais pas pourquoi

    Trève de blabla, voici mon problème :

    J'ai un formulaire, tout bête, avec entre autre deux champs texte, tout bête eux aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input type="text" name="title" id="title" value="" maxlength="64" />
    <input type="text" name="url" id="url" value="" maxlength="16" />
    Ce que j'aimerai faire :

    Lorsque j'écris par exemple "J'adore les patates " dans le champs title, le champs url se remplisse automatiquement de la forme : "j-adore-les-patates". Ca ressemble à du URL rewriting, c'est normal L'URL sera ensuite stockée dans ma base, puis resservie sous la forme index.php?post=j-adore-les-patates puis, à coup de htaccess, en /j-adore-les-patates.html.

    J'ai essayé de nombreux pattern et fonctions en Javascript (j'utilise jQuery), avec quelque chose qui ressemble à ça et qui fonctionne relativement bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $("#title").keyup(function () {
        var value = $(this).val();
        $("#url").val(value.replace(/[' ]/g, patternURL).toLowerCase());
    }).keyup();
     
    function patternURL(car) {
      if(car == "'" || car == " ") return "-";
      if(car == "ç") return "c";
      if(car == "é" || car == "è" || car == "ê") return "e";
      if(car == "à" || car == "â") return "a";
      if(car == "ù" || car == "û") return "u";
      if(car == "ô") return "o"; */
    }
    La fonction est absolument horrible mais définie bien ce que je veux faire :
    • Remplacer les caractères accentués par des non accentués
    • Remplacer les caractères spéciaux par un tiret

    Mais je ne veux pas, en cas de titre "Hey ! Beignet !" un truc genre "Hey------Beignet--" mais bien "hey-beignet".

    Voila, j'espère avoir été assez clair, je continue à chercher de mon côté.

    A très vite, et surtout, merci !!

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Pour simplifier, à ta place je procèderais en deux étapes :
    * remplacement des caractères accentués et autres (en faisant une recherche, il y a eu récemment diverses solutions de données à ce sujet) ;
    * remplacement de tout les caractères indésirés restant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var value = $(this).val();
    value = value.replace(/[\W+]/g, '-');
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Profil pro
    Webmaster
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var value = $(this).val();
    value = value.replace(/[\W+]/g, '-');
    Je ne connaissais pas cette regexp, je te remercie vivement !! Plus qu'à trouver comment supprimer le trop-plein de tirets et ce sera parfait...

    Encore merci à toi !

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Normalement, ça le fait déjà
    \W correspond à tout caractère non alphanumérique (donc autre que [a-z0-9]) et le + indique que ce caractère peut être présent plusieurs fois de suite.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var value = $(this).val();
    value = value.replace(/[\W+]/g, '-');
    Citation Envoyé par Bovino Voir le message
    Normalement, ça le fait déjà
    \W correspond à tout caractère non alphanumérique (donc autre que [a-z0-9]) et le + indique que ce caractère peut être présent plusieurs fois de suite.
    Pas tout à fait non...

    Ecrite comme ça oui : /\W+/g.
    Ecrite comme ça /[\W+]/g par contre elle sélectionne le premier caractère non alpha-numérique ou le premier caractère "+" et ceci de façon globale dans la chaine.

    C'est donc cette regex là qu'il faut utiliser : /\W+/g.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut


    C'est vrai que j'ai un peu dérapé sur le coup !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

Discussions similaires

  1. Package Ada pour mise en forme d'écran/console
    Par Hibou57 dans le forum Ada
    Réponses: 12
    Dernier message: 07/02/2015, 17h14
  2. Erreur sur champ text pour un index Full-Text
    Par Steph82 dans le forum Outils
    Réponses: 5
    Dernier message: 06/01/2011, 14h08
  3. texte et mise en forme
    Par sandytarit dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 09/02/2007, 19h20
  4. Widget Text et mise en forme des sélections
    Par Chris33 dans le forum Tkinter
    Réponses: 1
    Dernier message: 20/09/2006, 09h10
  5. [CSS] Besoin d'aide pour mise en forme !
    Par TorF dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 19/03/2005, 19h28

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