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 :

N'autoriser que certains caractéres


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    822
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 822
    Points : 49
    Points
    49
    Par défaut N'autoriser que certains caractéres
    Bonjour à tous,


    j'ai un champ textarea et je voudrait autoriser uniquement que les 1234567890 et les "-"

    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 IntegerOnly (evt) {  
     
          evt = (evt) ? evt : ((event) ? event : null);
     
     
     
          var code = evt.keyCode;
     
     
     
          // Si la touche pressée n'appartient pas aux chiffres 1 à 9 
     
          // et que ce n'est ni la touche backspace, ni la touche TAB, ni l'une des flèches gauche/droite, ni la touche DEL,
     
          //  alors: annule la frappe.
     
          if ((code < 48 || code > 57) && (code != 38)) 
     
            { evt.returnValue = false;  // méthode pour MSIE, marche aussi avec Safari, ignorée par Firefox (aucun problème)
     
              evt.preventDefault();  // méthode pour Firefox (marche aussi avec Safari)
     
     
     
              // Manque une méthode pour Netscape (7.0) et Opera (7.0)
     
            }                                                                          
     
     
     
        }
    j'ai trouver ceci comme code, mais le probleme par exemple je suis sur un portable la touche 1 à comme affectation aussi "&".

    Avec le code ci-dessus, si j'essai azertyu.etc... ça semble marcher, mais par contre si j'appuie sur le 1 sans etre en majuscule (donc &) le & s'affiche dans le champ.

    Comment résoudre ce problème ?

    Merci

    guigui69

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    822
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 822
    Points : 49
    Points
    49
    Par défaut
    re bonjour

    J'ai trouver ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function ejs_code_clavier(keyStroke)
    	{
    	ejs_code_eventChooser = (!document.all) ? keyStroke.which : event.keyCode;
    	ejs_code_which = String.fromCharCode(ejs_code_eventChooser).toLowerCase();
    	alert('Vous avez appuyé sur la touche '+ejs_code_which);
    	var regexp = /[-0-9]+/;
    	var test = (regexp.test (ejs_code_which))? true: false; // Vaut false
    	}
    document.onkeypress = ejs_code_clavier;
    Le problème il me détecte 2 touches. exemple quand j'appuie sur le 1 il me met en alert le "1" puis le second alert le "&".
    (alors que sur le site ou j'ai trouver le code il me detecte bien une touche)
    Quel erreur est-je commis?

    Merci

    guigui69

  3. #3
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Tu n'observes que onkeypress ?
    On peut voir youye la page ?

  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 644
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    mieux vaut le faire sur le onblur

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    822
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 822
    Points : 49
    Points
    49
    Par défaut
    J'ai trouver ceci comme 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
     
    function ejs_code_clavier(keyStroke)
    	{
    	ejs_code_eventChooser = (!document.all) ? keyStroke.which : event.keyCode;
    	ejs_code_which = String.fromCharCode(ejs_code_eventChooser).toLowerCase();
    	//alert('Vous avez appuyé sur la touche '+ejs_code_which);
     
    	var regexp = /[-0-9]+/;
    	var test = (regexp.test (ejs_code_which))? true: false; // Vaut false
    	//alert (test);
    	if(test == false)
    	     { keyStroke.returnValue = false;  // méthode pour MSIE, marche aussi avec Safari, ignorée par Firefox (aucun problème)
     
              keyStroke.preventDefault();  // méthode pour Firefox (marche aussi avec Safari)
     
     
              // Manque une méthode pour Netscape (7.0) et Opera (7.0)
     
            }   
    		else
    		{
    		}
    	}
    document.onkeypress = ejs_code_clavier;
    Par contre le probleme c'est qu'il affecte a tout les champs de ma page je voudrait juste qu'il realise cette fonction sur 2 champs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <td>Client:</td><td><textarea name="client_idr" id="client_idr" rows="3" cols="30" onkeyup="ejs_code_clavier(event,this.id)" ></textarea></td>
    </tr><tr>
    <td>Produit:</td><td><textarea name="produit_idr" id="produit_idr" rows="3" cols="30" onkeyup="ejs_code_clavier(event,this.id)" ></textarea></td>
    Quel partie du code je doit modifier?

    merci

    guigui69

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Points : 491
    Points
    491
    Par défaut
    d'accord avec spaceFrogue , t'auras juste a appliquer une regExp, et retourner e focus si ca ne convient pas

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    822
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 822
    Points : 49
    Points
    49
    Par défaut
    Je n'ai pas compris

    Pourrais-tu m'expliquer?

    Merci

    guigui69

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    822
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 822
    Points : 49
    Points
    49
    Par défaut
    ce que je comprend pas aussi:

    ma page
    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
     
    <table id="tableau_classique">
    <tr>
    <td>Date</td>
    <td><input type="text" value="<?php $date= date("d/m/Y"); echo $date;?>" name="date_idr" size="10" maxlength="10" />
    </td>
    </tr><tr>
    <td>Client:</td><td><textarea name="client_idr" id="client_idr" rows="3" cols="30" onfocus="ejs_code_clavier(event)" ></textarea></td>
    </tr><tr>
    <td>Produit:</td><td><textarea name="produit_idr" id="produit_idr" rows="3" cols="30" onfocus="ejs_code_clavier(event)" ></textarea></td>
    </tr><tr>
    <td> Fournisseur</td><td><textarea name="fournisseur_idr" rows="3" cols="30"></textarea></td>
    </tr><tr>
    <td>Information</td><td><textarea name="information_idr" rows="3" cols="30"></textarea></td>
    </tr>
    <tr>
    <td> Document:</td><td><input name="document_id" type="file" class="bouton1"/></td></tr>
    <tr>
    <td> Document Finalisé:</td><td><input name="fin_idr" type="radio" value="1" class="bouton1"/> Oui</td></tr>
    </table>
    il y qu'au niveau de produit et client que j'appelle cette fonction pourtant elle s'applique sur l'ensemble de ma page ( Si je tape une lettre sur le champ information il m'applique cette fonction)

    Pourquoi?

    Merci

    guigui69

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    822
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 822
    Points : 49
    Points
    49
    Par défaut
    J'ai trouver ce 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
     
     
    function chiffres(event) {
    // Compatibilité IE / Firefox
    if(!event&&window.event) {
    event=window.event;
    }
    // IE
    if(event.keyCode < 48 || event.keyCode > 57) {
    event.returnValue = false;
    event.cancelBubble = true;
    }
    // DOM
    if(event.which < 48 || event.which > 57) {
    event.preventDefault();
    event.stopPropagation();
    }
    }
    sur devellopez, il me va bien sauf que je voudrait juste autoriser la touche espace en plus des chiffres. Quel serait la méthode?

    Merci
    guigui69

  10. #10
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    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
    function chiffres(event) {
    // Compatibilité IE / Firefox
    if(!event&&window.event) {
    event=window.event;
    }
    // IE
    if((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 32) {
    event.returnValue = false;
    event.cancelBubble = true;
    }
    // DOM
    if((event.which < 48 || event.which > 57) && event.which != 32) {
    event.preventDefault();
    event.stopPropagation();
    }
    }

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    822
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 822
    Points : 49
    Points
    49
    Par défaut
    c'est exactement le code que j'ai trouvé

    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
     
    function chiffres(event) {
    // Compatibilité IE / Firefox
    if(!event&&window.event) {
    event=window.event;
    }
    if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) 
    event.returnValue = false;
    event.cancelBubble = true;
     
    if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) 
    event.preventDefault();
    event.stopPropagation();
     
    }

Discussions similaires

  1. [RegEx] Autoriser uniquement certains caractères
    Par HwRZxLc4 dans le forum Langage
    Réponses: 12
    Dernier message: 14/05/2009, 20h06
  2. N'autoriser que certaines IP
    Par saraza dans le forum Apache
    Réponses: 2
    Dernier message: 28/11/2008, 00h09
  3. [RegEx] Autoriser seulement certains caractères dans une chaine
    Par ptitdav80 dans le forum Langage
    Réponses: 2
    Dernier message: 03/06/2008, 21h54
  4. [RegEx] Regex : autoriser seulement certains caractères
    Par Thi0123 dans le forum Langage
    Réponses: 2
    Dernier message: 17/10/2006, 12h22

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