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 :

0 dans <input type="text"> pas pris en compte


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par défaut 0 dans <input type="text"> pas pris en compte
    Bonjour,

    Je souhaite faire une pré-vérification de mon formulaire en JS. Dans cette vérification, je souhaite tester 2 champs pour savoir si le 1er est bien plus petit que le 2nd. J'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	if(elem1 <= elem2 || elem1 === "" || elem2 ==="") { //elem1/2 sont les valeurs des champs
    		surligne(champ1,false); //champ1/2 sont les champs dans lesquels on écrit
    		surligne(champ2,false);
    		return true;
    		}
    	else {
    		surligne(champ1,true);
    		surligne(champ2,true);
    		return false;
    		}
    Dans la plupart des cas le test fonctionne mais pas dans certain cas...
    Quand je met 100 et 1 -> il me dit que le 1er est plus grand que le 2nd OK
    Quand je met 100 et 10 -> il me dit que le 1er est plus grand que le 2nd OK
    Quand je met 100 et 100 -> Il ne me dit rien mais c'est voulu OK
    Quand je met 100 et 2 -> il me valide l'entrée alors que le 1er est plus grand PAS OK
    Quand je met 200 et 100 -> il me dit que le 1er est plus grand que le 2nd OK

    Je me demande si il prend bien les 0 en compte, mais ce qui est bizar, c'est qu'il sait que 100 est plus grand que 1.

    Si quelqu'un a une idée sur pourquoi ça réagit comme ça et une solution, je suis preneur.
    Merci.

  2. #2
    Membre chevronné
    Avatar de Jacques Beauregard
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 231
    Par défaut
    Bonjour,

    Peut-on avoir le code HTML associé? en particulier les <input> qui ont un rapport.
    Merci
    Il ne faut jamais prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...

    Le guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par défaut
    Bonjour et merci pour votre réponse.
    Je ne mets qu'un groupement d'input, comme les autres sont similaires.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form method="POST" action="https://www.bidule.com" onsubmit="return verifSearchForm(this)">
    	<input id="tc_1" type="text" onblur="verifNumbers(this)" name="tc[]" />
    	-> 
    	<input id="tc_2" type="text" onblur="verifNumbers(this)" name="tc[]" /> 
    	<span id="erreur_tc" class="erreur"> </span>
    </form>
    Je fais une 1ere verification sur les champs individuellement avec "verifNumbers", puis c'est au moment d'envoyer le formulaire que je teste si les variables sont dans le bonne ordre avec "verifSearchForm".

  4. #4
    Membre chevronné
    Avatar de Jacques Beauregard
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 231
    Par défaut
    Il me faut aussi l'ensemble de ton JS pour tester, en particulier la déclaration des variables elem1, elem2,
    les méthodes que tu as citées et utilisées.
    Il ne faut jamais prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...

    Le guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par défaut
    Oki doki,
    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
     
     
    //Effectué lors de la tentative de POST
    function verifSearchForm(form) { 
    	var tc_1 = verifNumbers(form.tc_1);
    	var tc_2 = verifNumbers(form.tc_2);
    	if(tc_1 && tc_2 ) {
    		var tc = compare(form.tc_1, form.tc_2);
    		if(tc) 
    			{return true;}
    		else 
    			{return false;}
    		}
    	}
    //Verifie que le 1er champs > 2eme champs
    function compare(champ1, champ2) {
    	var elem1 = champ1.value;
    	var elem2 = champ2.value;
     
    	idResult = getIdErreur(champ1);
     
    	if(elem1 <= elem2 || elem1 === "" || elem2 ==="") {
    		surligne(champ1,false);//surligne ne fait que changer la couleur de fond du champ
    		surligne(champ2,false);
    		document.getElementById(idResult).innerHTML = '';
    		return true;
    		}
    	else {
    		surligne(champ1,true);
    		surligne(champ2,true);
    		document.getElementById(idResult).innerHTML = 'Le premier élément doit être plus petit que le second.';
    		return false;
    		}
    	}
     
    //Verifie que le nombre soit >0 et qu'il soit correctement formaté
    function verifNumbers(champ) {
    	var elem = champ.value;
    	var regex = /^[0-9]*\.?[0-9]{0,3}$/;
     
    	idResult = getIdErreur(champ);	
     
    	if(regex.test(elem)) {
    		if(elem >= 0) {
    			surligne(champ, false);
    			document.getElementById(idResult).innerHTML = '';
        		return true;
    			}
    		else {
    			surligne(champ, true);
    			document.getElementById(idResult).innerHTML = 'Le nombre doit être positif (ex : 23550.356).';
    			return false;
    			}
    		}
    	else {
    		surligne(champ, true);
    		document.getElementById(idResult).innerHTML = 'Le champs doit être un nombre positif ayant 3 décimales maximum (ex : 23550.356).';
    		return false;
    		}
    	}

  6. #6
    Invité
    Invité(e)
    Par défaut
    Vos champs sont de type "text", donc la comparaison faite dans (elem1 <= elem2) est une comparaison de textes dans l'ordre alphabétique.
    Dans l'ordre alphabétique, 2 est bien après 100.
    Utilisez parseInt() pour convertir vos textes en entiers, et comparez les nombres obtenus.

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

Discussions similaires

  1. Forcer l'utilisateur a saisir du numerique dans un input type="text"
    Par scraly dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 02/06/2016, 21h30
  2. Récupérer variable dans input type text
    Par Enthau dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/06/2007, 08h53
  3. [Conception] valeur dans un input type text
    Par CYCLOPE91440 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/02/2007, 18h08
  4. Réponses: 6
    Dernier message: 17/03/2006, 12h23
  5. Index du curseur dans un input type=text
    Par antonus dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/09/2005, 17h52

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