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 :

Utilisation de Replace() avec la HTML textbox.value


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Utilisation de Replace() avec la HTML textbox.value
    Bonjour à tous. Ma première tentative à utiliser ce forum alors j'espère être dans le bon endroit pour cette question.

    Voici les trois fonctions que j'utilise mais je n'arrive pas à faire un replace() des caractères avec accents. Pourtant les fonctions replace fonctionnent si j'assigne directement une chaîne litérale à chaine dans la fonction noaccent().

    Voici le code:
    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
     
    function validation() {
                 // la valeur du textbox HTML nommé: nom
    	var txtValue = document.getElementById("nom").value;
    	if (isValidNameType(txtValue) == false) {
    		showError(document.getElementById("errnom"), STR_ERR_INVALID_NAME, "errlabelon");
    		valid = false;
    	}
    	return valid;
    }
     
    function isValidNameType(txtToVerify) {
    	var regex = new RegExp("[^a-zA-Z \-]+", "g");
    	var tempText = noaccent(txtToVerify);
    	// Je renvoi l'inverse du résultat car celui-ci défini si on a
    	// trouver des caractères illicites rendant la chaîne invalide.
    	return (regex.test(tempText) == false)
    }
     
    function noaccent(chaine) {
        var temp = chaine.replace(/[àâä]/g, "a");
        temp = temp.replace(/[éèêë]/g, "e");
        temp = temp.replace(/[îï]/g, "i");
        temp = temp.replace(/[ôö]/g, "o");
        temp = temp.replace(/[ùûü]/g, "u");
        temp = temp.replace(/[ÀÂÄ]/g, "A");
        temp = temp.replace(/[ÉÈÊË]/g, "E");
        temp = temp.replace(/[ÎÏ]/g, "I");
        temp = temp.replace(/[ÔÖ]/g, "O");
        temp = temp.replace(/[ÙÛÜ]/g, "U");
        return temp;
    }
    Est-ce que le problême pourrait venir du transfert de la chaîne parmis les trois fonctions? J'ai essayer plusieurs alternatives mais rien n'y va.
    J'admet être un peu nouveau pour ce qui est du javascript. Merci d'avance à qui pourra y voir claire !

  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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    cela peut provenir du fait que l replace précédent n'est pas terminé lors du replace suivant ...

    regarde plutot de code avec une boucle while ...

    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
    <script type='text/javascript'>
    var chaine ='àâäéèêëïïöôûüù';
    function RemoveAccents(Texte){
    var Accents = 'àâäéèêëïïöôûüù';
    var NoAccen = 'aaaeeeeiioouuu';
     
    Accents = Accents.split('');
    NoAccen = NoAccen.split('');
    var i=0;
    while(Accents[i]){
    					var Reg=new RegExp(Accents[i],'gi');
                     Texte=Texte.replace(Reg,NoAccen[i]);
                     i++
                     }
    return Texte;
    }                  					
     
    alert(RemoveAccents(chaine))
    </script>
    à toi d'adapter pour la liste des caractères à remplacer ..

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup SpaceFrog de ta réponse.
    J'ai essayé ta fonction au lieu de la mienne et même problême !

    J'ai fait une page nouvelle qui ne contenait que mes fonctions et une autre avec les tiennes et les deux fonctionnent. C'est à n'y rien comprendre !

    Ce doit être une question d'érreur dans ma programmation. Ma logique doit me faire défaut quelque part dans mon utilisation de textbox.value. Pourtant, isolé, les fonctions marchent comme il se doit quand ils sont dans la même page que mon HTML et non en externe. hmmmm....

    Je te tien au courrant si je trouve quelque chose. Merci encore de t'y avoir frotté.

    Méo

    P.S.: J'y reviens. J'ai rendu les fonctions qui marchaient sur la page HTML sur un fichier externe et voilà !... le problême est revenu. Alors c'est définitivement là où il y a un problême. Je te le partage au cas ou celà te dit quelque chose.

    Merci encore.

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Voici la solution trouvée.
    C'est un 'hack' pour l'instant mais je ne vois pas comment faire autrement. Au moins ça marche !

    J'ai essayer de mettre la fonction plus haut sur la page externe de JS mais cela n'a rien changer au problême.

    J'ai garder la fonction noaccent(chaine) dans une balise script sur la page HTML. Les deux autres fonctions restent sur la page externe. Ca marche.

    Je ne sais pas pourquoi ca marche mais au moins je réussit mes validations ainsi. Un jour proche, j'y regarderai de plus près mais le projet est dû pour ce soir alors pour l'instant ce 'hack' me suffit.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/07/2011, 15h57
  2. textbox.value ou textbox.text en combinaison avec DDL
    Par kssillati dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/05/2011, 18h44
  3. Utilisation de la fonction replace() avec une regexp
    Par Ishizaki dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/08/2009, 17h39
  4. [MYSQL] [débutant] utiliser replace avec mysql.pas
    Par alex01pernot dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/08/2006, 21h23
  5. [ANT] Utiliser "<replace>" avec un joker
    Par blinkz0rz dans le forum ANT
    Réponses: 1
    Dernier message: 29/08/2006, 12h11

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