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

jQuery Discussion :

Vérification d'un input en temps réel


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de ZnhaarX
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Par défaut Vérification d'un input en temps réel
    Bonjour à tous,

    Comme l'explicite le titre du topic j'ai besoin de faire une vérification en temps réel de ce qui est entré dans un input.
    En clair, par exemple dans notre cas, j'ai besoin de n'entrer que des valeurs numériques entières.

    Voici ce qui est actuellement fait:
    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
     
    $("input").live('keyup', function (e) {
            if($(this).val().match("^[0-9]+$") == null){
                $(this).val($(this).val().substr(0,($(this).val().length-1)));
            }
        });
     
    $("input").live('keydown', function (e) {
            var key = parseInt(e.which);
            if (
                (key < 48 || key > 57) &&
                (key < 96 || key > 105) &&
                (key < 37 || key > 40) &&
                (key < 8 || key > 9)
            ) {
                return false;
            }
        });
    Donc il s'agit de quelque chose de relativement "moche" en considérant le fait que visuellement ce n'est pas beau, que si on reste appuyé sur une touche ça ne fonctionne pas, et qu'il y a vraiment beaucoup trop de trucs à gérer.

    Donc je me penchais sur quelque chose de plus simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        $("input").live('keydown',function(event){
            if($(this).val().match("[0-9]+") == null){
                event.preventDefault();
            }
        });
    Donc ceci, concrètement, bloque la saisie si la regex de match pas.
    Ma question serait: comment la débloquer ?

    Ou comment trouver une solution qui fasse ce que je veux faire, sans passer par une multitude de cas en fonction des eventkey.

    Merci d'avance pour vos réponses.

    ZnhaarX.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Par défaut
    Salut, pour ma part j'utilise cette fonction sur l'event keypress de mon input:
    (surement pas opti mais bon ca fonctionne :p)

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    function numbersonly(myfield, e, maxsize, dec, strictPos)
    {
    	var key;
    	var keychar;
     
    	if (window.event)
    		key = window.event.keyCode;
    	else if (e)
    		key = e.which;
    	else
    		return true;
    	keychar = String.fromCharCode(key);
     
    	if(maxsize){
    		if(myfield.value.length>=maxsize)
    			return false;
    	}
     
    	//control keys
    	if ((key==null) || (key==0) || (key==8) || 
    	 (key==9) || (key==13) || (key==27) ){
    		return true;
    	}
    	//numbers
    	else if ((("0123456789").indexOf(keychar) > -1)){
    		if(dec){
    			var str = myfield.value+keychar;
     
    			if( myfield.value.indexOf("," ) != -1 ){
    				var strDec = str.split(",");
    				strDec = strDec[1];
    				if( strDec.length > 1 )
    					return false;
    				else
    					return true;
    			}
    			else if( myfield.value.length == 0 && keychar ==  "0" && strictPos  )
    				return false;
    			else			
    				return true;			
    		}
    		else{
    			if( myfield.value.length == 0 && keychar ==  "0" && strictPos )
    				return false;
    			else
    				return true;
    		}
    	}
     
    	//decimal point jump
    	else if (dec && (keychar == ",") && myfield.value.indexOf("," ) == -1 )
    	{
    		//myfield.form.element[dec].focus();
    		return false;
    	}
    	else
    		return false;
     
     
    }

Discussions similaires

  1. Mise à jour en temps réel de la base de données
    Par Clotilde dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/06/2004, 22h09
  2. [MFC] graphique temps réel
    Par _Thomas_ dans le forum MFC
    Réponses: 10
    Dernier message: 01/06/2004, 11h56
  3. Voir requête éxécuté en temps réel ?
    Par [DreaMs] dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/01/2004, 14h52
  4. cubes temps réel en ROLAP
    Par Guizz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 09/07/2003, 16h36
  5. Durée d'un traitement temps réel
    Par Almex dans le forum C
    Réponses: 5
    Dernier message: 29/03/2003, 14h15

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