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 :

comment supprimer les accents avec un onKeyPress


Sujet :

JavaScript

  1. #1
    Membre �clair�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    D�cembre 2007
    Messages
    696
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 696
    Par d�faut comment supprimer les accents avec un onKeyPress
    bonjour, je cherche � filtrer la saisie dans un input de type text.
    lorsque je saisi un caract�re, s'il s'agit d'une lettre avec un accent, celle-ci est remplac�e par son �quivalent sans accent.
    je coince � mort, qui aurait une fonction semblable a celle que je cherche ?

    merci pour votre coup de main

  2. #2
    Membre �clair�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    D�cembre 2007
    Messages
    696
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 696
    Par d�faut
    pour le moment j'ai �cris �a :

    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
    <script type="text/javascript">
    function no_accent(event)
    {
    	var valeurs_interdites = new Array(192, 193, 194, 195, 196, 197, 224, 225, 226, 227, 228, 229, 210, 211, 212, 213, 214, 216, 242, 243, 244, 245, 246, 248, 200, 201, 202, 203, 232, 233, 234, 235, 199, 231, 204, 205, 206, 207, 236, 237, 238, 239, 217, 218, 219, 220, 249, 250, 251, 252, 255, 209, 241);
    	var valeurs_de_remplacment = new Array(97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 101, 101, 101, 101, 101, 101, 101, 101, 99, 99, 105, 105, 105, 105, 105, 105, 105, 105, 117, 117, 117, 117, 117, 117, 117, 117, 121, 110, 110);
    	var nb = valeurs_de_remplacment.length;
    	var trouve = false;
    	var i = 0;
    	var nouvelle_valeur = "";
    	while((i < nb) && (!trouve))
    	{
    		if(event.charCode == valeurs_interdites[i])
    		{
    			trouve = true;
    		}
    		else
    		{
    			i++;
    		}
    	}
     
    	if(trouve)
    	{
    		nouvelle_valeur = valeurs_de_remplacment[i];
    	}
     
    	event.returnValue = true;
    }
    </script>
    maintenant j'aimerais retourner la "nouvelle_valeur", dans les cas o� ce serait une lettre accentu�e.

  3. #3
    Membre �clair�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    D�cembre 2007
    Messages
    696
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 696
    Par d�faut
    je bloque car�ment :s
    aucune de mes recherches sur google ne m'a aid� >_<
    j'ai essay� :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    event.CharCode = nouvelle_valeur;
    �a semble ne pas marcher :s

  4. #4
    Membre habitu�
    Femme Profil pro
    Inscrit en
    Mars 2010
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 37
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Par d�faut
    Bonjour,

    J'ai repris ta fonction et l'ai un peu modifi�e, normalement �a marche :

    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
    function no_accent(event)
    {
    	var valeurs_interdites = new Array(192, 193, 194, 195, 196, 197, 224, 225, 226, 227, 228, 229, 210, 211, 212, 213, 214, 216, 242, 243, 244, 245, 246, 248, 200, 201, 202, 203, 232, 233, 234, 235, 199, 231, 204, 205, 206, 207, 236, 237, 238, 239, 217, 218, 219, 220, 249, 250, 251, 252, 255, 209, 241);
    	var valeurs_de_remplacment = new Array(97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 101, 101, 101, 101, 101, 101, 101, 101, 99, 99, 105, 105, 105, 105, 105, 105, 105, 105, 117, 117, 117, 117, 117, 117, 117, 117, 121, 110, 110);
    	var nb = valeurs_de_remplacment.length;
    	var nouveau_mot = "";
    	var trouve = false;
    	for(var j=0; j<event.length; j++){
    		for(var i =0; i<nb ; i++) 
    		{
    			if(valeurs_interdites[i] == event.charCodeAt(j))
    			{
    				nouveau_mot += String.fromCharCode(valeurs_de_remplacment[i]);
    				trouve = true;
    			}
    		}
     
    		if(!trouve) {
    			nouveau_mot += event.charAt(j);
    		}
     
    		trouve = false;
    	}
     
    	//event.returnValue = true;
    	return nouveau_mot;
    }

  5. #5
    Membre �clair�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    D�cembre 2007
    Messages
    696
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 696
    Par d�faut
    merci mais non.
    je dois vraiment retourner la valeur !
    un script d'autocomplete jquery s'execute apr�s ca, donc je ne peux pas modifier le mot en lui meme, mais modifier la lettre saisi. enfin je m'explique mal mais je pense que tu auras compris.
    je dois r�ussir avec ma m�thode, mais je n'arrive pas � la finir :s

  6. #6
    Membre �clair�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    D�cembre 2007
    Messages
    696
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 696
    Par d�faut
    va savoir pourquoi �a fonctionne quand meme en rempla�ant la valeur ...
    je repars sur ton id�e, merci

  7. #7
    Membre habitu�
    Femme Profil pro
    Inscrit en
    Mars 2010
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 37
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Par d�faut
    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
    function no_accent()
    {
    	var mot_saisi = document.getElementById("inputId").value;
    	var lettre_a_remplacer = mot_saisi.charCodeAt(mot_saisi.length-1);// prend la derniere lettre
     
    	var valeurs_interdites = new Array(192, 193, 194, 195, 196, 197, 224, 225, 226, 227, 228, 229, 210, 211, 212, 213, 214, 216, 242, 243, 244, 245, 246, 248, 200, 201, 202, 203, 232, 233, 234, 235, 199, 231, 204, 205, 206, 207, 236, 237, 238, 239, 217, 218, 219, 220, 249, 250, 251, 252, 255, 209, 241);
    	var valeurs_de_remplacment = new Array(97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 101, 101, 101, 101, 101, 101, 101, 101, 99, 99, 105, 105, 105, 105, 105, 105, 105, 105, 117, 117, 117, 117, 117, 117, 117, 117, 121, 110, 110);
    	var nb = valeurs_de_remplacment.length;
    	var trouve = false;
     
    	for(var i =0; i<nb ; i++) 
    	{
    		if(valeurs_interdites[i] == lettre_a_remplacer)
    		{
    			lettre_a_remplacer = valeurs_de_remplacment[i];
    			trouve = true;
    		}
    	}
    	var nouveau_mot = mot_saisi.substring(0, mot_saisi.length-1) + lettre_a_remplacer;
     
    	return nouveau_mot;
    }
    La �a te retourne le code du mot si c'est bien �a que tu veux.

  8. #8
    Membre �clair�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    D�cembre 2007
    Messages
    696
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 696
    Par d�faut
    version finale du code :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <input type="text" name="ville" id="ville" onKeyPress="return no_accent(this.value, this.id, event);"/>
    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
    <script type="text/javascript">
    function no_accent(ma_chaine, id_element, event)
    {
    	// on définit les lettres acceptées et celles qui sont refusées
    	var valeurs_interdites = new Array(192, 193, 194, 195, 196, 197, 224, 225, 226, 227, 228, 229, 210, 211, 212, 213, 214, 216, 242, 243, 244, 245, 246, 248, 200, 201, 202, 203, 232, 233, 234, 235, 199, 231, 204, 205, 206, 207, 236, 237, 238, 239, 217, 218, 219, 220, 249, 250, 251, 252, 255, 209, 241);
    	var valeurs_de_remplacement = new Array(97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 101, 101, 101, 101, 101, 101, 101, 101, 99, 99, 105, 105, 105, 105, 105, 105, 105, 105, 117, 117, 117, 117, 117, 117, 117, 117, 121, 110, 110);
    	var nb = valeurs_de_remplacement.length;
     
    	// on vérifie que la valeur saisi est autorisée
    	var trouve = false;
    	var i = 0;
    	while((i < nb) && (!trouve))
    	{
    		if(event.charCode == valeurs_interdites[i])
    		{
    			trouve = true;
    		}
    		else
    		{
    			i++;
    		}
    	}
     
    	// si la valeur saisie est accentuée, on la modifie + retour
    	// RAPPEL si ce n'est pas un accent, on retourne simplement la valeur EXEMPLE : la touche effacer !
    	if(trouve)
    	{
    		document.getElementById(id_element).value = ma_chaine + String.fromCharCode(valeurs_de_remplacement[i]);
    		return false;
    	}
    	else
    	{
    		return true;
    	}
    }
    </script>
    et �a marche

    un grand merci pour le coup de main ! ^^

    petit rappel : j'ai g�r� le cas o� on devrait utiliser la touche effacer !

  9. #9
    Membre �clair�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    D�cembre 2007
    Messages
    696
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 696
    Par d�faut
    et rebelotte, me revoila de retour !!
    il s'av�re que ce code ne fonctionne malheureusement pas sous ie6 !!
    quel navigateur de ***** (biiip)

  10. #10
    Membre �clair�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    D�cembre 2007
    Messages
    696
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 696
    Par d�faut
    Citation Envoy� par thor76160 Voir le message
    et rebelotte, me revoila de retour !!
    il s'av�re que ce code ne fonctionne malheureusement pas sous ie6 !!
    quel navigateur de ***** (biiip)
    m�me chose sous ie8 et op�ra, je viens de les installer

  11. #11
    Membre habitu�
    Femme Profil pro
    Inscrit en
    Mars 2010
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 37
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Par d�faut
    Je ne sais pas trop ce qu'il ne marche pas sous IE,
    mais je sais que le code que je t'ai fil� marche sous IE6.

    Je ne comprend pas trop l'int�r�t de ta variable event...
    Sachant que quand j'ai test� ta fonction alert(event.charCode); est undefined...

  12. #12
    Membre �clair�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    D�cembre 2007
    Messages
    696
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 696
    Par d�faut
    apparemment c'est le event qui ne passe pas dans les parametre de la fonction

  13. #13
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Bonjour,
    Citation Envoy� par thor76160 Voir le message
    apparemment c'est le event qui ne passe pas dans les parametre de la fonction
    je n'ai pas regard� en d�tail, mais les �v�nements sont g�r�s diff�remment suivant les nav.
    Quelques exemples ici ...

    A+

Discussions similaires

  1. [AC-2003] Comment supprimer les espaces avec mid, left, right
    Par edonis dans le forum VBA Access
    R�ponses: 3
    Dernier message: 09/10/2011, 19h05
  2. Supprimer les accents avec Linq
    Par gazier20 dans le forum Linq
    R�ponses: 8
    Dernier message: 02/12/2009, 17h43
  3. R�ponses: 6
    Dernier message: 12/02/2008, 20h02
  4. [String] Comment supprimer les accents
    Par iuz dans le forum Collection et Stream
    R�ponses: 7
    Dernier message: 08/03/2004, 02h58

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