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 :

Mettre en majuscule les premieres lettres d'un prenom compose


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 156
    Points : 48
    Points
    48
    Par défaut Mettre en majuscule les premieres lettres d'un prenom compose
    Bonsoir à tous,
    Je voudrais mettre en majuscules les premières lettres d'un prénom composé. Pour cela j'ai écrit le code suivant :

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Un formulaire en CSS</title>
    <link href="SP01_js.css" type="text/css" rel="stylesheet" />
    <script type="text/javascript">
     
       function mettreMajuscule() {
       //J'accede tout d'abord au nom saisi avec la methode getElementById
         var leNomSaisi = document.getElementById("leNomId").value;
       //le nom saisi est mis en majuscule avec la methode toUpperCase
         var leNomModifie=leNomSaisi.toUpperCase();
       //Je modifie la variable saisie
        document.getElementById("leNomId").value=leNomModifie;
       }
    </script>
     
    <script type="text/javascript">
    // Fonction pour un prenom non compose
       function premLetMaj() {
          var lePrenomSaisi = document.getElementById("lePrenomId").value;
    	  //La methode charAT de l'objet String un caractere que l'on transforme en majuscule avec toUpperCase
    	  //Avec la methode substring on retourne un bout de la valeur de la variable que l'on force en minuscule
          var lePrenomModifie=lePrenomSaisi.charAt(0).toUpperCase() + lePrenomSaisi.substring(1).toLowerCase();
    	  document.getElementById("lePrenomId").value=lePrenomModifie; 
       }
     
    </script>
     
    <script type="text/javascript">
     //Fonction pour un prenom compose
     function formatePrenom(){
        var lePrenomSaisi = document.getElementById("lePrenomId").value;
    	//on verifie s'il s'agit d'un prenom compose en recherchant la presence d'un separateur (tiret ou espace)
    	   if (lePrenomSaisi.indexOf("-")!=-1){
    	      var separateur="-";
    	   }
     
    	   else if(lePrenomSaisi.indexOf("")!=-1){
    	      var separateur="";
    	   }
     
    	   else{
    	   //si on n'a pas trouve alors c'est un prenom simple et on met la 1er lettre en majuscule en appelant la fonntion 
    	   //premLetMaj()
    	   return(premLetMaj());
    	   }
     
    	 //Ce code est lu uniquement dans le cas de prenom compose
    	 var prenom_array=lePrenomSaisi.split(separateur);
    	    for(i=0; i<prenom_array.length; i++){
    		   prenom_array[i]=premLetMaj(prenom_array[i]);
    		}
    		var prenomFormat=prenom_array.join(separateur);
    		return prenomFormat;
     }
    </script>
    </head>
     
    <body>
    <div style="width:600px";>
    <form name="leForm" method="post" action="script.php">
     
    <p class="titre">Coordonnées </p>
     
    <!--La balise fieldset crée un contour autour des balises de formulaires qu'elle entoure-->
     
    <fieldset id="coordonnees">
    <!--La balise label permet lorsque l'on clique sur son texte de donner le focus à un champ de formulaire-->
      <p id="civilite"> <label>Civilité : </label>
          <input type="radio" name="Civilité" value="M." />M.
          <input type="radio" name="Civilité" value="Melle." />Melle.
          <input type="radio" name="Civilité" value="Mme." />Mme.
       </p>
     
       <label>Nom : </label>
     
          <input type="text" name="leNom" size="30" id="leNomId" onchange="mettreMajuscule()" /><br />
     
       <label>Prénom : </label>
     
          <input type="text" name="lePrenom" size="30" id="lePrenomId" onchange="formatePrenom()" /><br />
     
       <label>Adresse : </label>
          <input type="text" name="adresse" size="30" /><br />
     
       <label>Code postal : </label>
          <input type="text" name="codepostal" size="30" /><br />
     
       <label>Ville : </label>
          <input type="text" name="ville" size="30" /><br />  
     
       <label>Télephone : </label>
          <input type="text" name="telephone" size="30" /><br />  
     
       <label>Adresse courriel : </label>
          <input type="text" name="courriel" size="30" /><br />  
     
       <p id="interets"><label>Centre d'intérets : </label>
     
         <!--Nous créons des cases à cocher et récupérons la valeur cochée dans une variable de type tableau en php-->
    		 <input type="checkbox" name="interets[]" value="langageProgrammation" />Langage programmation
    		 <input type="checkbox" name="interets[]" value="htmlCss" />Html et Css <br />
    		 <input type="checkbox" name="interets[]" value="photoshop" />Photoshop <br />
    		 <input type="checkbox" name="interets[]" value="developpementWeb" />Developpement Web
       </p>
    </fieldset> 
     
    <p class="titre">Message</p>
     
    <fieldset id="message">
     
      <!--zone de texte crée avec textarea pour mettre des commentaires-->
       <textarea name="comments" rows="5" cols="40"></textarea> 
    </fieldset>
     
    <!--Création des boutons submit et reset-->
    <p id="buttons">
       <input type="submit" value="envoyer" />
       <input type="reset" value="effacer" />
    </p>
     
    </form>
    </div>
     
    </body>
    </html>
    Si la fonction marche pour le prénom simple ; en revanche pour le prénom composé elle ne fait rien. Je ne vois pas où je fais l'erreur.
    Si quelqu'un peut me guider je l'en remercie vivement.

    Bon dimanche

  2. #2
    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 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    RegExp? quelqu'un a dit regExp

    une petite fonction callback dans le replace.

    Attention toutefois au charset la page html doit avoir une balise meta utf8, le form un accept charset utf-8 ET le fichier lui même être enregistré en utf8 ...

    Pourquoi ?

    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
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Nouvelle page 1</title>
    <script type="text/javascript">
    function FirstMaj(texte){
    	var reg=/(\b|-)[\w]/gi;
    	return texte.replace(reg,Cap)
    	}
     
    function Cap($0){
    return ($0.toUpperCase())
    }
    </script>
     
    </head>
    <body>
    <form  accept-charset="utf-8">
    <input type='text' value='' id="foo" style="width:200px;"/>
    <input type='button' value='Majuscules' onclick="document.getElementById('foo').value=FirstMaj(document.getElementById('foo').value)"  />
    </form>
    </body>
    </html>
    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 !

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Points : 81
    Points
    81
    Par défaut
    pas de maj au début des noms des méthodes, les majs c'est pour les classes

  4. #4
    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 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    ça fAiT cE qU'On Lui DemAndE...
    aLoRS MajUscuLe ou pas ...
    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 !

  5. #5
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par rimbaut Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script type="text/javascript">
    //...
    else if(lePrenomSaisi.indexOf("")!=-1){
       var separateur="";
    }
    // ...
    </script>
    Salut Arthur ^^

    Juste en passant : si ce passage était censé rechercher la présence d'un espace dans la chaine récupérée à partir de ton input, il risque d'y avoir un problème (il manque l'espace, tu recherches une chaine vide à la place...)
    Mais bon, si tu as appliqué la solution de Spaffy, ou tout autre à base de regexp, tu n'as (heureusement) plus besoin de faire ce test

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 156
    Points : 48
    Points
    48
    Par défaut
    Merci à tous pour vos réponses. Bonne journée

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

Discussions similaires

  1. [Débutant] Mettre en majuscule les premieres lettres d'un prenom compose
    Par shaun_the_sheep dans le forum C#
    Réponses: 8
    Dernier message: 07/05/2014, 09h15
  2. mettre en majuscule la premiere lettre d'un mot
    Par teophane dans le forum Requêtes
    Réponses: 5
    Dernier message: 18/11/2011, 13h54
  3. Réponses: 2
    Dernier message: 27/08/2009, 17h10
  4. Mettre en majuscule chaque premiere lettre
    Par andreditdd dans le forum Delphi
    Réponses: 12
    Dernier message: 02/04/2007, 14h12
  5. [RegEx] Mettre en majuscules les premières lettres accentuées
    Par Bibicmoi dans le forum Langage
    Réponses: 8
    Dernier message: 15/05/2006, 19h02

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