Passage d'un texte en majuscule sans utiliser la méthode "touppercase"

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 769 fois - Téléchargée 30 fois

Contenu du snippet

La méthode "toUpperCase" focntionne très mal avec la langue française : elle transforme les caractères minuscules accentués en majuscules accentuées. Or, en Français, les majuscules ne comportent pas d'accent.

Je préfère donc utiliser le code ci-dessous qui est certainement plus long à l'éxécution, mais éminemment plus conforme au language.

Source / Exemple :


<?xml version="1.0" encoding="iso-8859-1"?>
<!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>
    <title></title>
    <script type="text/javascript">
      function majuscule(obj)
      {
        var minus = "aàâäbcçdeéèêëfghiîïjklmnoôöpqrstuùûvwxyz"        
        var majus = "AAAABCCDEEEEEFGHIIIJKLMNOOOPQRSTUUUVWXYZ"
        var entree = obj.texte.value;
        var sortie = "";
        for (var i = 0 ; i < entree.length ; i++)
        {
          var car = entree.substr(i, 1);
          sortie += (minus.indexOf(car) != -1) ? majus.substr(minus.indexOf(car), 1) : car;
        }
        obj.texte.value = sortie;
      }
    </script>
  </head>
  <body>
    <form name="formulaire" id="formulaire" method="post" action="">
      <table>
        <tr>
          <td>
            <input type="text" name="texte" id="texte" value="Jérôme" />
          </td>
        </tr>
        <tr>
          <td>
            <input type="button" value="Tester" onclick="majuscule(this.form)" />
          </td>
        </tr>
      </table>
    </form>
  </body>
</html>

A voir également

Ajouter un commentaire

Commentaires

elron8
Messages postés
3
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
30 juin 2008

C'est bien beau tout ca mais moi ce code m'a servi donc merci!!
cs_d2nis
Messages postés
1
Date d'inscription
samedi 28 avril 2007
Statut
Membre
Dernière intervention
6 mars 2008

D'accord, mais cette fonction n'est pas portable.

En effet, pour que indexOf fonctionne, l'encodage de la chaîne minus devra être le même que l'encodage du formulaire qui contient la donnée entrante (obj).

Dans le cas de l'exemple, la chaîne est en ISO-8859-1, l'encodage du formulaire sera ISO-8859-1.
myjoss
Messages postés
3
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
11 août 2006

Bonjour,
Moi je dis BRAVO pour ce script. Il y a des gens comme moi qui ont besoin de textes en majuscules sans accent pour les stocker dans une base MYSQL.
Alors un grand merci pour ce script qui règle le problème et qui donne un bon exemple de programmation javascript.
Bonne continuation.
Joss.
Muadib24
Messages postés
2
Date d'inscription
mercredi 17 septembre 2003
Statut
Membre
Dernière intervention
17 septembre 2004

Grossière erreur. Je suis infographiste et je connais parfaitement les règles de typographie française, et j'affirme qu'il faut des majuscules accentuées. Exemple : "SALE SUCRE" ! Je veux dire quoi ? Salé sucré ? Sale sucré ? etc...
cs_Voulf
Messages postés
1
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
10 mars 2005

Salut,

effectivement les majuscules sont recommandées mais il est des cas où l'on a besoin de forcer la passage en maj sans accents.

La seule chose que l'on peut trouver à redire, c'est le doctype xhtml strict qui impose séparation contenu / comportement, ce qui n'est pas le cas avec des javascripts intrusifs, toujours est-il que celà m'ouvre une piste pour un problème au boulot.

Merci à toi !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.