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 :

saisie numérique côté client


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 343
    Points : 129
    Points
    129
    Par défaut saisie numérique côté client
    Bonjour,

    j'ai vu dans la faq qu'on peut savoir si la saisie dans un champ est un entier >0 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function IsPosInteger(nbr){
        return (/^\d+$/.test(nbr)&&(parseInt(nbr,10)<=0));
    }
    par contre j'imagine que cette fonction ne peut être appelée que après avoir finie la saisie, c'est à dire quitter le champ de saisie?

    de plus, puis-je filtrer touche par touche, avec javascript si ma saisie est bien un numérique, et ne pas afficher ce qui n'est pas numérique?
    j'ai vu sur google qu'il y avait des choses proposées, mais après retour serveur, je crois. Or moi je veux que ça se fasse côté client...

    merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 265
    Points : 284
    Points
    284
    Par défaut
    Salut,

    tu peux verifier au fur et a mesure que l'utilisateur tape si c'est un nombre ou non. Je t'ai fait un script qui verifie le dernier caractere tapé et l'enleve s'il n'est pas un digit. Dis si ca t'aide ..

    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
     
    <html>
    	<head>
    		<title></title>
    		<script type="text/javascript">
    			<!--
    			function IsPosInteger(nbr) {
    				var dernier_caractere = nbr.charAt(nbr.length-1);
    				if ((dernier_caractere < "0") || (dernier_caractere > "9")) {
    					document.getElementById("inputText").value = nbr.substring(0, nbr.length-1);
    				}
    			}
    			-->
    		</script>
    	</head>
    <body>
     
    	<form id="monform">
    		<input type="text" onkeyup="IsPosInteger(this.value)" id="inputText" />
    	</form>
     
    </body>
    </html>

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 343
    Points : 129
    Points
    129
    Par défaut
    c'est génial, merci beaucoup!

    seul hic, ma page est en asp.net:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:textbox id="NbField" runat="server" BackColor="#FFFFC0" Width="30px" MaxLength="3" cssclass="label" ></asp:textbox>
    comme onkeyup n'est pas dispo, j'ai essayé avec :
    OnTextChanged="IsPosInteger(this.value)"
    mais j'ai 2 messages:
    "no definition for IsposInteger"
    "no definition for value"

    bien sur, j'ai adapté ta fontion (en remplaçant "inputText" par "NbField")!

    merci de m'aider!

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 265
    Points : 284
    Points
    284
    Par défaut
    Oula !
    perso j'y connais rien en asp, google est ton ami pour ca..

    Essaye toujours de mettre plutot ca, on sait jamais.. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OnTextChanged="javascript:IsPosInteger(this.value)"

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 343
    Points : 129
    Points
    129
    Par défaut
    finalement j'ai utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script>
    function IsPosInteger(field)
    {
        if (event.keyCode < 48 || event.keyCode > 57) event.returnValue = false; 
    }
    </script>
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:textbox id="NbField" runat="server" BackColor="#FFFFC0" Width="30px" MaxLength="3" cssclass="label" onKeyPress="IsPosInteger(this);"></asp:textbox>
    voilà, merci de m'avoir aidé, la piste m'a permis d'arriver là, sinon j'aurai mis plus de temps, voir je n'aurai pas réussi et aurai été obligé de demander ailleurs!

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

Discussions similaires

  1. [PHP-JS] Forcer une saisie numérique
    Par Empty_body dans le forum Langage
    Réponses: 9
    Dernier message: 04/10/2011, 18h46
  2. insertion de donnée saisie par le client dans la base de données du serveur
    Par modafine dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 22/09/2008, 12h46
  3. [MFC]Saisie Numérique dans un TextBox
    Par torNAdE dans le forum MFC
    Réponses: 1
    Dernier message: 09/05/2006, 06h47
  4. Saisie numérique...
    Par Empty_body dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/01/2006, 19h21
  5. DBGrid personnalisé (controle de saisie numérique et date).
    Par abdelghani_k dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/04/2005, 18h50

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