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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 188 fois - Téléchargée 32 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
30 janv. 2009 à 09:37
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
6 mars 2008 à 10:30
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
28 déc. 2005 à 10:40
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
26 nov. 2005 à 16:52
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
10 mars 2005 à 14:20
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 !
Afficher les 8 commentaires

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.