Pour les bons du JS ...
Pour un formulaire géré dynamiquement, je veux effectuer un contrôle
numérique. J'ai donc :
1 - dans mon formulaire, ma zone est décrite comme suit
<p><font size="2" face="Arial, Helvetica, sans-serif">Saisir un
nombre<br><input name="NBNIVO1" type="text"
onChange="CtrlNum(this,'Vous devez saisir un nombre')" value="0"
size="7" maxlength="5"></font></p>
avec ma fonction JS
function CtrlNum(objet,msgerr)
{
with (objet) // Pour l'objet en paramètre
{
valeur=parseInt(value);
if (isNaN(valeur)) // Si valeur n'est pas numérique
{
if (msgerr!="") {alert(msgerr);}
objet.select(); // Resélectionne le champ
objet.focus(); // Resélectionne le contenu
return false;
}
else
{
return true;
}
}
}
Cela est efficace si je saisis A dans la zone et cela m'envoie le msg,
mais pas si je saisis 12A.
Il se comporte comme s'il ne testait que le 1er car ??
J'ai essayé avec OnBlur à la place de OnChange mais c'est pareil.
Merci de vos réponses.
--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Romain PETIT
Roumegou avait prétendu :
Cela est efficace si je saisis A dans la zone et cela m'envoie le msg, mais pas si je saisis 12A. Il se comporte comme s'il ne testait que le 1er car ?? J'ai essayé avec OnBlur à la place de OnChange mais c'est pareil.
Avec les expressions régulières : http://www.aidejavascript.com/article43.html
// contrôle d'une valeur numérique NNNNN ou NNNNN,NN NNNNN.NN function controle_num(champ) { if (champ.value == "") return fonc_erreur("champ_vide", champ.name); else if (!champ.value.match("^[0-9]*((.|,)[0-9]*)?$")) return fonc_erreur("num_invalide", champ.name); else return ""; }
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Roumegou avait prétendu :
Cela est efficace si je saisis A dans la zone et cela m'envoie le msg, mais
pas si je saisis 12A.
Il se comporte comme s'il ne testait que le 1er car ??
J'ai essayé avec OnBlur à la place de OnChange mais c'est pareil.
Avec les expressions régulières :
http://www.aidejavascript.com/article43.html
// contrôle d'une valeur numérique NNNNN ou NNNNN,NN NNNNN.NN
function controle_num(champ) {
if (champ.value == "")
return fonc_erreur("champ_vide", champ.name);
else if (!champ.value.match("^[0-9]*((.|,)[0-9]*)?$"))
return fonc_erreur("num_invalide", champ.name);
else return "";
}
--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Cela est efficace si je saisis A dans la zone et cela m'envoie le msg, mais pas si je saisis 12A. Il se comporte comme s'il ne testait que le 1er car ?? J'ai essayé avec OnBlur à la place de OnChange mais c'est pareil.
Avec les expressions régulières : http://www.aidejavascript.com/article43.html
// contrôle d'une valeur numérique NNNNN ou NNNNN,NN NNNNN.NN function controle_num(champ) { if (champ.value == "") return fonc_erreur("champ_vide", champ.name); else if (!champ.value.match("^[0-9]*((.|,)[0-9]*)?$")) return fonc_erreur("num_invalide", champ.name); else return ""; }
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Roumegou
Romain PETIT a émis l'idée suivante :
Roumegou avait prétendu :
Cela est efficace si je saisis A dans la zone et cela m'envoie le msg, mais pas si je saisis 12A. Il se comporte comme s'il ne testait que le 1er car ?? J'ai essayé avec OnBlur à la place de OnChange mais c'est pareil.
Avec les expressions régulières : http://www.aidejavascript.com/article43.html
// contrôle d'une valeur numérique NNNNN ou NNNNN,NN NNNNN.NN function controle_num(champ) { if (champ.value == "") return fonc_erreur("champ_vide", champ.name); else if (!champ.value.match("^[0-9]*((.|,)[0-9]*)?$")) return fonc_erreur("num_invalide", champ.name); else return ""; }
Merci de ta réponse et du lien. je viens de tester ta solution mais cela se comporte comme la mienne. En fait, le pb vient du onChange je pense. Cela se comporte très bizarrement. Il ne réagit pas tout le temps et il faut que le nombre de caractères saisis soit différent du précédent pour passer dans cet événement ???? (testé sous netscape et IE6)
PFFF!!! dire qu'on se plaint de windev mais je hais le javascript.
Bonjour la galère pour débugguer (je viens de passer l'am à apprendre à utiliser venkman le deboggueur de JS de Mozilla)
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Romain PETIT a émis l'idée suivante :
Roumegou avait prétendu :
Cela est efficace si je saisis A dans la zone et cela m'envoie le msg, mais
pas si je saisis 12A.
Il se comporte comme s'il ne testait que le 1er car ??
J'ai essayé avec OnBlur à la place de OnChange mais c'est pareil.
Avec les expressions régulières :
http://www.aidejavascript.com/article43.html
// contrôle d'une valeur numérique NNNNN ou NNNNN,NN NNNNN.NN
function controle_num(champ) {
if (champ.value == "")
return fonc_erreur("champ_vide", champ.name);
else if (!champ.value.match("^[0-9]*((.|,)[0-9]*)?$"))
return fonc_erreur("num_invalide", champ.name);
else return "";
}
Merci de ta réponse et du lien.
je viens de tester ta solution mais cela se comporte comme la mienne.
En fait, le pb vient du onChange je pense. Cela se comporte très
bizarrement. Il ne réagit pas tout le temps et il faut que le nombre de
caractères saisis soit différent du précédent pour passer dans cet
événement ???? (testé sous netscape et IE6)
PFFF!!! dire qu'on se plaint de windev mais je hais le javascript.
Bonjour la galère pour débugguer (je viens de passer l'am à apprendre à
utiliser venkman le deboggueur de JS de Mozilla)
--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Cela est efficace si je saisis A dans la zone et cela m'envoie le msg, mais pas si je saisis 12A. Il se comporte comme s'il ne testait que le 1er car ?? J'ai essayé avec OnBlur à la place de OnChange mais c'est pareil.
Avec les expressions régulières : http://www.aidejavascript.com/article43.html
// contrôle d'une valeur numérique NNNNN ou NNNNN,NN NNNNN.NN function controle_num(champ) { if (champ.value == "") return fonc_erreur("champ_vide", champ.name); else if (!champ.value.match("^[0-9]*((.|,)[0-9]*)?$")) return fonc_erreur("num_invalide", champ.name); else return ""; }
Merci de ta réponse et du lien. je viens de tester ta solution mais cela se comporte comme la mienne. En fait, le pb vient du onChange je pense. Cela se comporte très bizarrement. Il ne réagit pas tout le temps et il faut que le nombre de caractères saisis soit différent du précédent pour passer dans cet événement ???? (testé sous netscape et IE6)
PFFF!!! dire qu'on se plaint de windev mais je hais le javascript.
Bonjour la galère pour débugguer (je viens de passer l'am à apprendre à utiliser venkman le deboggueur de JS de Mozilla)
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Roumegou
Pouvez vous m'éviter les hommes en blanc et la camisole car déjà les voisins alertés par mes hurlements de bêtes ont commencer à appeler la police !!!!
cela n'est pas un pb WebDev puisque j'ai isolé cela dans une page HTML dont voici le source en fin de message. Pouvez vous coller cela dans un fichier html et tester cela puis me dire pourquoi cela ne fonctionne pas à tout les coups ??? essayez plusieurs valeurs et sortez du champs par tab. Par exemple le jeu d'essai suivant : a = rien aa = msg OK 12 = rien 12p = rien 12pp = msg Ok
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Document sans titre</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <script language="JavaScript" type="text/JavaScript"> function CtrlNum(objet,msgerr) { debugger; with (objet) // Pour l'objet en paramètre { if (!objet.value.match("^[0-9]*((.|,)[0-9]*)?$")) // Si valeur n'est pas numérique { if (msgerr!="") {alert(msgerr);} objet.select(); // Resélectionne le champ objet.focus(); // Resélectionne le contenu return false; } else { return true; } } } </script>
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Pouvez vous m'éviter les hommes en blanc et la camisole car déjà les
voisins alertés par mes hurlements de bêtes ont commencer à appeler la
police !!!!
cela n'est pas un pb WebDev puisque j'ai isolé cela dans une page HTML
dont voici le source en fin de message.
Pouvez vous coller cela dans un fichier html et tester cela puis me
dire pourquoi cela ne fonctionne pas à tout les coups ???
essayez plusieurs valeurs et sortez du champs par tab. Par exemple le
jeu d'essai suivant :
a = rien
aa = msg OK
12 = rien
12p = rien
12pp = msg Ok
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<script language="JavaScript" type="text/JavaScript">
function CtrlNum(objet,msgerr)
{
debugger;
with (objet) // Pour l'objet en paramètre
{
if (!objet.value.match("^[0-9]*((.|,)[0-9]*)?$")) // Si
valeur n'est pas numérique
{
if (msgerr!="") {alert(msgerr);}
objet.select(); // Resélectionne le champ
objet.focus(); // Resélectionne le contenu
return false;
}
else
{
return true;
}
}
}
</script>
Pouvez vous m'éviter les hommes en blanc et la camisole car déjà les voisins alertés par mes hurlements de bêtes ont commencer à appeler la police !!!!
cela n'est pas un pb WebDev puisque j'ai isolé cela dans une page HTML dont voici le source en fin de message. Pouvez vous coller cela dans un fichier html et tester cela puis me dire pourquoi cela ne fonctionne pas à tout les coups ??? essayez plusieurs valeurs et sortez du champs par tab. Par exemple le jeu d'essai suivant : a = rien aa = msg OK 12 = rien 12p = rien 12pp = msg Ok
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Document sans titre</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <script language="JavaScript" type="text/JavaScript"> function CtrlNum(objet,msgerr) { debugger; with (objet) // Pour l'objet en paramètre { if (!objet.value.match("^[0-9]*((.|,)[0-9]*)?$")) // Si valeur n'est pas numérique { if (msgerr!="") {alert(msgerr);} objet.select(); // Resélectionne le champ objet.focus(); // Resélectionne le contenu return false; } else { return true; } } } </script>
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Gégé
Roumegou wrote:
cela n'est pas un pb WebDev puisque j'ai isolé cela dans une page HTML dont voici le source en fin de message. Pouvez vous coller cela dans un fichier html et tester cela puis me dire pourquoi cela ne fonctionne pas à tout les coups ???
Essaye ton Javascript sur plusieurs navigateurs.
Roumegou wrote:
cela n'est pas un pb WebDev puisque j'ai isolé cela dans une page HTML
dont voici le source en fin de message.
Pouvez vous coller cela dans un fichier html et tester cela puis me dire
pourquoi cela ne fonctionne pas à tout les coups ???
cela n'est pas un pb WebDev puisque j'ai isolé cela dans une page HTML dont voici le source en fin de message. Pouvez vous coller cela dans un fichier html et tester cela puis me dire pourquoi cela ne fonctionne pas à tout les coups ???
Essaye ton Javascript sur plusieurs navigateurs.
Roumegou
Gégé a formulé ce mardi :
Roumegou wrote:
cela n'est pas un pb WebDev puisque j'ai isolé cela dans une page HTML dont voici le source en fin de message. Pouvez vous coller cela dans un fichier html et tester cela puis me dire pourquoi cela ne fonctionne pas à tout les coups ???
Essaye ton Javascript sur plusieurs navigateurs.
Netscape 7.0 et IE6 c'est déjà pas mal, non ?
En fait je viens de tester une version qui fonctionne. moins élégant que les expressions régulières, mais cela fonctionne. Et je ne comprends toujours pas pourquoi mes 2 premières versions ne fonctionnent pas (expr régulière et if (isNaN(valeur)) function CtrlNum(objet,msgerr) { var RefString="1234567890"; var EstNum=true; with (objet) // Pour l'objet en paramètre { InString=objet.value; for (Count=0; Count < InString.length; Count++) { TempChar= InString.substring (Count, Count+1); if (RefString.indexOf (TempChar, 0)==-1) {EstNumúlse;break;} }
if (!EstNum) // Si valeur n'est pas numérique { if (msgerr!="") alert(msgerr); objet.select(); // Resélectionne le champ objet.focus(); // Resélectionne le contenu return false; } else return true; } }
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Gégé a formulé ce mardi :
Roumegou wrote:
cela n'est pas un pb WebDev puisque j'ai isolé cela dans une page HTML dont
voici le source en fin de message.
Pouvez vous coller cela dans un fichier html et tester cela puis me dire
pourquoi cela ne fonctionne pas à tout les coups ???
Essaye ton Javascript sur plusieurs navigateurs.
Netscape 7.0 et IE6 c'est déjà pas mal, non ?
En fait je viens de tester une version qui fonctionne. moins élégant
que les expressions régulières, mais cela fonctionne.
Et je ne comprends toujours pas pourquoi mes 2 premières versions ne
fonctionnent pas (expr régulière et if (isNaN(valeur))
function CtrlNum(objet,msgerr)
{
var RefString="1234567890";
var EstNum=true;
with (objet) // Pour l'objet en paramètre
{
InString=objet.value;
for (Count=0; Count < InString.length; Count++) {
TempChar= InString.substring (Count, Count+1);
if (RefString.indexOf (TempChar, 0)==-1)
{EstNumúlse;break;}
}
if (!EstNum) // Si valeur n'est pas numérique
{
if (msgerr!="") alert(msgerr);
objet.select(); // Resélectionne le champ
objet.focus(); // Resélectionne le contenu
return false;
}
else
return true;
}
}
--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
cela n'est pas un pb WebDev puisque j'ai isolé cela dans une page HTML dont voici le source en fin de message. Pouvez vous coller cela dans un fichier html et tester cela puis me dire pourquoi cela ne fonctionne pas à tout les coups ???
Essaye ton Javascript sur plusieurs navigateurs.
Netscape 7.0 et IE6 c'est déjà pas mal, non ?
En fait je viens de tester une version qui fonctionne. moins élégant que les expressions régulières, mais cela fonctionne. Et je ne comprends toujours pas pourquoi mes 2 premières versions ne fonctionnent pas (expr régulière et if (isNaN(valeur)) function CtrlNum(objet,msgerr) { var RefString="1234567890"; var EstNum=true; with (objet) // Pour l'objet en paramètre { InString=objet.value; for (Count=0; Count < InString.length; Count++) { TempChar= InString.substring (Count, Count+1); if (RefString.indexOf (TempChar, 0)==-1) {EstNumúlse;break;} }
if (!EstNum) // Si valeur n'est pas numérique { if (msgerr!="") alert(msgerr); objet.select(); // Resélectionne le champ objet.focus(); // Resélectionne le contenu return false; } else return true; } }
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Roumegou
Roumegou avait soumis l'idée :
if (!objet.value.match("^[0-9]*((.|,)[0-9]*)?$"))
Comme quoi il ne faut pas toujours faire confiance aux sites de developpement.
Voici ma version d'expression régulière et ça marche. if (!objet.value.match("^[0-9]*(,|.)?[0-9]*$"))
sinon j'ai voulu remplacer [0-9] par d mais rien à faire. Pourtant cela devrait fonctionner ??
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Roumegou avait soumis l'idée :
if (!objet.value.match("^[0-9]*((.|,)[0-9]*)?$"))
Comme quoi il ne faut pas toujours faire confiance aux sites de
developpement.
Voici ma version d'expression régulière et ça marche.
if (!objet.value.match("^[0-9]*(,|.)?[0-9]*$"))
sinon j'ai voulu remplacer [0-9] par d mais rien à faire. Pourtant
cela devrait fonctionner ??
--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)