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 :

controle saisie zone de text


Sujet :

JavaScript

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut controle saisie zone de text
    bonjour,

    Je voudrais créer une zone de texte qui n'accepte que des chiffres non negatifs.
    Je voudrais que la zone de texte n'accepte que 4 chiffres au maximum.
    Si le nombre est suppérieur à 4096, je voudrais qu'il soit tout de remplacé par le nombre 4096.

    Comment faire ?

    Pour la taille de la textebox (4 caractères), comment est-ce défini ? en html, css ou javascript ?

  2. #2
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" onchange="this.value=(parseInt(this.value)>4096)?4096:this.value;" onkeyup="if (this.value.length>4) {alert('4 max !');return false;}">
    Comme ça ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    ... ça ressemble

    actuellement, avec ta fonction, on peut entrer des lettres => je veux que lorsqu'on tape une lettre (ou qu'on fasse un copier/coller d'une lettre) que celle-ci ne soit pas prise en compte.
    je veux aussi (qu'a la place d'afficher un message) que si on rentre plus de 4 caractères, les caratères supplémentaires soient bloqués

    pour l'affichage de la taille de la zone, c'est sur le css qu'il faut jouer ? comment fait-on pour que la taille corresponde à 4 caratères ?

  4. #4
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Emcy
    actuellement, avec ta fonction, on peut entrer des lettres
    je veux que lorsqu'on tape une lettre (ou qu'on fasse un copier/coller d'une lettre) que celle-ci ne soit pas prise en compte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.value=(parseInt(this.value)>4096)?4096:((isNaN(this.value))?'':this.value);
    Citation Envoyé par Emcy
    je veux aussi (qu'a la place d'afficher un message) que si on rentre plus de 4 caractères, les caratères supplémentaires soient bloqués
    Tu peux peut-être adapter un peu, non ?
    pour l'affichage de la taille de la zone, c'est sur le css qu'il faut jouer ? comment fait-on pour que la taille corresponde à 4 caratères ?
    Tel quel, pas efficace (en nb de car.). Définis le en "px" (style="width:20px;" au cas où )

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    sur un keydown, comment fait-on pour connaitre le caratère entré et selon une condition, le bloquer ?

    => le problème du keyup ou du onchange, c'est qu'on voit le caractère s'afficher avant qu'il s'efface => ça fait pas très bien...

    définir la taille d'une textbow en px, est-ce vraimment une bonne solution ? => si l'utilisateur change la taille du texte, les caractères risquent de ne pas rentrer, non ?

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    j'arrive à récuperer la touche qui à été pressée mais je n'arrive pas à la bloquer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function CtrlSaisie(MyEvent)
    {
    	if (!((96 <= MyEvent.keyCode) && (MyEvent.keyCode <= 105))){ // touches chiffres
    		if ((MyEvent.keyCode != 8) && (MyEvent.keyCode != 46)){ /// touches backspace et suppr
    			//MyEvent.keyCode = null; // ne marche pas
    		}
    	}
    }
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" onkeydown="CtrlSaisie(event);">

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    j'ai trouver un exemple qui fonctionne pas mal :

    j'ai essayé d'ajouter la gestion pour que le chiffre ne soit pas plus grand que 4096 mais ça ne marche pas (j'ai du mal avec les prototype) :

    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
    37
    38
    39
    40
    41
    42
    43
    function SUC(champ) 
    {
    	this.champ=champ;
    	var Lui=this;
    	var ie = false; /*@cc_on ie = true; @*/
    	if ( ie ) {
    		this.champ.onkeypress = Lui.IE;
    	} else  { 
    		this.champ.onkeyup = function(e){Lui.FF(this, e);}
    	}
     
    	this.champ.onchange = Lui.ChangeVal;
    }
     
    SUC.prototype.IE=function() //pour IE
    {
    	if ( event.keyCode<0x30 || event.keyCode>0x39 )
    	{
    		event.returnValue= false;
    	}
    }
     
     
    SUC.prototype.FF=function(zone,evt) //pour FF
    {
    	if ( evt.which<0x30 || evt.which>0x39 )
    	{
    		zone.value=zone.value.replace(/[^0-9]/g,"");
    	}
    }
     
    SUC.prototype.ChangeVal=function(zone) 
    {
    	if (zone.value > 4096){
    		zone.value = 4096;
    	}
     
    	if (zone.value < 0){
    		zone.value = 0;
    	}
     
    	alert('onchange');
    }

  8. #8
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Emcy
    définir la taille d'une textbow en px, est-ce vraimment une bonne solution ?
    Le CSS est le + adapté pour l'aspect graphique (c'est fait pour).
    Citation Envoyé par Emcy
    => si l'utilisateur change la taille du texte, les caractères risquent de ne pas rentrer, non ?
    Là ça devient son pb, pas le tien !
    Il peut aussi réduire sa fenêtre en 10px X 10px : tu veux pouvoir le gérer aussi ?

    Sur les prototypes, je peux pas t'aider. Mais je pense que tu devrais passer le "this" en param de ta fonction. L'appeler de l' "intérieur" pose pb ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  9. #9
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    finalement, j'ai fait plus simple

    associé à l'evenement onKeyUp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function CtrlSaisie(Me)
    {	
    	Me.value = Me.value.replace(/[^0-9]/g,"");
     
    	if (Me.value > 4096){
    		Me.value = 4096;
    	}
     
    }
    => si on fait un copier/coller, la fonction n'est pas activée, y a t-il un moyen d'empecher le copier/coller ou de le bloquer les caractères ?

  10. #10
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Emcy
    => si on fait un copier/coller, la fonction n'est pas activée, y a t-il un moyen d'empecher le copier/coller ou de le bloquer les caractères ?
    Ca se fera sur onchange.
    Ou alors ajoute le sur onmouseup ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  11. #11
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    le onchage ne me plait pas, car il faut sortie de la zone pour qu'il s'active
    et le onmouseup ne marche pas lorsqu'on clic sur coller

    merci quand meme pour ton aide

Discussions similaires

  1. [AC-2000] Controler les informations saisies dans une zone de texte
    Par etoileetoile dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/10/2009, 14h33
  2. Réponses: 4
    Dernier message: 25/08/2008, 15h08
  3. contrôle de saisie zone de texte
    Par rachid31 dans le forum VBA Access
    Réponses: 10
    Dernier message: 20/05/2008, 14h42
  4. Réponses: 1
    Dernier message: 09/05/2007, 11h41
  5. [html] zone de texte sans saisie possible
    Par Silvia12 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 01/08/2005, 16h37

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