Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2011, 12h52   #1
Membre éclairé
 
Avatar de ZnhaarX
 
Homme Gabriel Malet
Ingénieur développement logiciels
Inscription : février 2011
Messages : 146
Détails du profil
Informations personnelles :
Nom : Homme Gabriel Malet
Âge : 23
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 146
Points : 340
Points : 340
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 :
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 :
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.
__________________
« War is peace. Freedom is slavery. Ignorance is strength. » - George Orwell
ZnhaarX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 14h56   #2
Membre habitué
 
Homme
Développeur Web
Inscription : avril 2007
Messages : 323
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2007
Messages : 323
Points : 144
Points : 144
Salut, pour ma part j'utilise cette fonction sur l'event keypress de mon input:
(surement pas opti mais bon ca fonctionne :p)

Code :
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;
 
 
}
__________________
L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...
erox44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h33.


 
 
 
 
Partenaires

Hébergement Web