CONTRÔLE AUTOMATIQUE DES CHAMPS D'UN FORMULAIRE [CONFORM]

Signaler
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
tompou
Messages postés
10
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
21 janvier 2011
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/28451-controle-automatique-des-champs-d-un-formulaire-conform

tompou
Messages postés
10
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
21 janvier 2011

je rectifie, mon upload foncitonne quand j'enlève cela du formulaire : onsubmit="return (ConForm(this));"
tompou
Messages postés
10
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
21 janvier 2011

Bonjour,
Je relance le sujet car j'ai testé ce script qui marche à merveille.

Oui mais voilà, hier j'intègre dans mon fichier un upload de fichier et là cela ne marche pas qd je garde la fonction de controle des champs.
Quelqu'un aurait une idée?

merci
pccamatrix
Messages postés
1
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
20 juin 2010

Juste pour info , le contrôle d'adresse mail n'est pas correct !
si une adresse de type test@test;com est entrée , elle passe aussi , de même si des caractères spéciaux sont entrée il les acceptes aussi ,ou une seul lettre pour le domaine passe aussi !!!!

Il vaux mieux utiliser ceci :
("[a-zA-Z0-9_-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,3}$") )
a la place de
("[-\./w]*@/w*\./w*") ) // pas terrible ça !

Le commentaire en disait long ;)

Merci néanmoins pour ce script
neurocactus
Messages postés
5
Date d'inscription
lundi 7 août 2006
Statut
Membre
Dernière intervention
6 avril 2008

Merci!
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
ouais. en fait sur tous ceux qui
ne sont pas testés plus tard.
et même, faudrait changer les tests
... dès que je prend le temps.
@+
neurocactus
Messages postés
5
Date d'inscription
lundi 7 août 2006
Statut
Membre
Dernière intervention
6 avril 2008

Sur "erreur"..., et sur "nom" aussi?
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
ah ben oui... j'avais oublié ça !
pour simplifier les tests qui suivent...

alors si ce que tu as fait baigne..

ou tester :
valeur[RLtrim(trv[0].toLowerCase())]=RLtrim(trv[1]);
( pas vérifier si ça baigne toujours pour tout ! )

sinon : ne pas faire le toLowerCase sur erreur:
c'est une chaîne de caractères,
c'est d'ailleurs une erreur que de le faire !

@+
neurocactus
Messages postés
5
Date d'inscription
lundi 7 août 2006
Statut
Membre
Dernière intervention
6 avril 2008

Bonjour Bultez
Bien sûr et je n'ai pas manqué de l'essayer, mais pour moi ça ne marche pas! Les majuscules sont réduites en minuscules.
Ici peut-être: valeur[RLtrim(trv[0].toLowerCase())]=RLtrim(trv[1].toLowerCase()); ???
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
salut neurocactus,
aucun inconvénient... le "plus simple"
est, peut-être, malgré tout, de mettre
cette majuscule dans le texte utilisé
lors de l'appel de la fonction ? non ?
@+
neurocactus
Messages postés
5
Date d'inscription
lundi 7 août 2006
Statut
Membre
Dernière intervention
6 avril 2008

Ce script est vraiment bien!
Par souci d'esthétique j'aime bien commencer une nouvelle phrase ou les positions d'une liste par une majuscule. Un détail..., bien sûr. Je propose donc un ajout pour que lors de l'affichage dans la fenêtre "alert", les textes d'erreurs commencent par une majuscule. Donc dans la "function SignalErreur(z1,frm,z2)" j'ajoute la ligne de code suivante:
z1["erreur"]=z1["erreur"].substring(0,1).toUpperCase()+z1["erreur"].substring(1);
juste avant:
return "\r\n"+z1["erreur"];
Ça marche pour moi. Y a-t-il des inconvénients?
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
>>seulement aujourd'hui je viens de voir ta réponse
je ne t'avais pas répondu en direct ? je suis sûr que si !
message détourné par la CIA probablement...
leodrel56
Messages postés
6
Date d'inscription
jeudi 11 août 2005
Statut
Membre
Dernière intervention
20 mai 2008

Lol oui moi aussi ça fais 3 jours que je reçois des notifications pour cette source et seuleument aujourd'hui je viens de voir ta réponse BULTEZ ^^. Donc bah merci pour cette réponse ! Je vais aller voir ça tout de suite. A toute et encore bravo !
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
je ne sais pas pourquoi j'ai reçu une notification
de CodesSources pour cette source ?
mais ça tombe bien, j'avais omis de donner
l'explication suite au message de leodrel :
lang ( et les autres probablement ? ) ont une taille limitée.
donc, si on est confronté à ça :
http://www.javascriptfr.com/codes/CONTROLE-CHAMPS-FORMULAIRE-CCF_43101.aspx
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
testé sous IE7 sans problème... pour moi !
peux-tu m'envoyer ton formulaire, le .js ... ?
pour m'écrire, c'est ici http://www.bul.freesurf.fr/MAS/?Bul
je regarderai/testerai...
mettre ( en plus ! ) [!pourriel] dans le sujet
comme je suis particulièrement spamé....
@+
leodrel56
Messages postés
6
Date d'inscription
jeudi 11 août 2005
Statut
Membre
Dernière intervention
20 mai 2008

Non mais quand tu ne remplis pas les champs correctement sous IE, quand la fenêtre "alert()" s'affiche, tout le texte que tu passes en paramètres ne s'affiche pas, on ne voit que les 10 premiers caractères du message d'erreur tu comprends ? enfin ça me le fais sous IE 7, sinon sous Firefox 2.0.0.12 pas de problème, toute la ligne s'affiche correctement.
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
pas sûr d'avoir compris LeoDrel...
c'est le nombre de caractères d'une ligne qui est limité
ou le nombre de lignes ?
dans des circonctances particulières ?
tu mets un erreur:texte erreur ?
@+
leodrel56
Messages postés
6
Date d'inscription
jeudi 11 août 2005
Statut
Membre
Dernière intervention
20 mai 2008

Parfait ! ^^ 10/10, mais ti soucis, sous IE l'affichage de l'"alert" ne se fait pas complètement, il y max 10 caractères qui s'affichent et c'est tout alors que sous firefox aucun problème les alertes s'affichent sans problème tout le texte est lisible. Félicitation ^^ !
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
pour ceux que ça intéresse, j'ai fait l'équivalant
en décrivant les contrôles à effectuer dans un .xml.
le html n'est plus "détourné" de son utlisation "normale".
http://www.javascriptfr.com/codes/CONTROLE-CHAMPS-FORMULAIRE-CCF_43101.aspx
@+
à Tguerlus : c'était de l'humour. et non : pas d'évolution
dans ce sens ( ça m'étonnerait d'ailleurs que ça vienne ).
tguerlus
Messages postés
43
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
3 mai 2005

Finalement la balise "alt" n'est pas si mal comme solution intermediaire ;-))
Pour le composant textearea? Pour ma part, quand il y a une exception, ben tanpis pour les puristes mais je fais du specifique. (Ecole SSII) car l'idée est de gagner du temps sur le developpement et non le contraire). Mais c'est bien de pousser l'etude jusqu'au bout au moins on est fixé.

PS: Je ne t'ai pas menti car je l'avais testé à l'époque sur 5 navigateurs et le résultat ete le même pour tous les navigateurs utilisant le moteur Gecko. Maintenant, il a peut-etre évoluer depuis il faudrait retester.
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
grand merci à toi de nous signaler ça.
pas de doute, finalement, comme disait
Malalam : vive le XML (?) faudrait que
je le fasse, que je transpose...
"pas grand chose à faire" pour ça à priori !
Cordialement.
MAn017
Messages postés
1
Date d'inscription
mercredi 31 août 2005
Statut
Membre
Dernière intervention
5 juin 2007

Hello,
Tout d'abord Bravo et merci pour ce script. Cela me fait une bonne base pour mes besoins et va me faire gagner pas mal de temps.
Maintenant la remarque utile : IE semble ne tenir compte que des 130 premiers caractères(espaces compris)de l'attibut LANG. Donc si vous avez un message d'erreur à rallonge comme moi, vous aurez un message tronqué ou le message par defaut. Du coup je suis repassé au controle sur le ALT qui n'a pas cette limitation.
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
à Anteane,

les seuls attribut universels qui fonctionnent
sont class et lang sur un Textarea avec FF,
avec IE, "tout baigne".

tester=formulaire.elements[no_element].lang;
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
nonon, je ne m'étais pas trompé de fenêtre, avec ce code, tu mélanges le xhtml au javascript en mettant dans alt le code de controle...
anteane
Messages postés
2
Date d'inscription
vendredi 25 août 2006
Statut
Membre
Dernière intervention
26 août 2006

Merci a tous de vous être penchés sur le probleme. J'ai essayé comme me l'a conseillé Bultez de remplacer la ligne de code :
tester=formulaire.elements[no_element].alt;

Apparement il semble que pour les textarea et quelque soit l'attribut choisi (controle par exemple) cela ne fonctionne avec IE mais pas avec FF.
malalam
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Bah, en tous cas, très bon script :-) 10.
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
tu as parfaitement raison,
soit on "détourne" un truc de sa fonction,
soit on en utilise un "pas conforme".
en xml, le souci est levé ;-D
malalam
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Je n'ai pas dit que ça ne fonctionnait pas lol...je suis même à peu près certain que cela fonctionne sur tous les navigateurs "très utilisés".
Juste que ce n'est pas dans les normes W3C.
Le problème, en fait, c'est qu'aucun élément HTML faisant partie de la DTD officielle ne conviendra. Parce qu'ils ont tous leur utilité...donc, en détournant leur utilisation, tu tombes en dehors des normes. D'où l'idée d'une DTD personnalisée. Solution qui, je le concède, est franchement pénible lol.
Vive le xml... en résumé ;-)
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
salut Malalam,

c'était ça ma 1ère version... : controle="..."
mais TGuerlus m'avait signalé que cela ne
fonctionnait pas avec avec les moteurs Gecko !
je l'ai cru ! on m'aurait menti ? :-)
et il me conseillait alt
[ j'avais envisagé/proposé <style='...controle:....'> ]
mais, pas con le alt, que je me dis. et je rectifie.

mais de toute manière, 1 seule ligne est à modifier :
tester=formulaire.elements[no_element].alt;
=======================================***
et à remplacer parce que l'on préfère :-D

alt sur textarea fonctionne avec IE,
pas testé avec les autres navigateurs.

merci des conseils.
malalam
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Ce qui ne veut pas dire que ça ne marche pas hein! Mais tu aurais utilisé un attribut du genre :
<textarea chekingform="...">...
ça aurait été pareil (et ça aurait marché...).
malalam
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Hello,

j'avais déjà vu cette utilisation de alt (mais ça vient peut-être de toi...un admirateur sans doute :-) ).
ceci dit, un truc me chagrine quand même...MEME si c'est une bonne idée : Antéane a raison. Dans le sens ou, si la balise input accepte l'attribut alt en HTML4...ce n'est pas le cas pour textarea. Alt ne fait pas partie des attributs autorisés pour cet élément. Alt est dédié :
- obligatoirement a area et img
- optionnellement à input et applet
http://www.w3.org/TR/html401/struct/objects.html#adef-alt
et
http://www.w3.org/TR/html401/interact/forms.html#edef-TEXTAREA
Du coup, si on veut rester dans les normes, nous faut une DTD personnalisée...au boulot, Bul ;-)
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
qu'est-ce qu'il me fait là le coucou747 ?
"j'ai rien compris".
il s'est gourré d'endroit où envoyer, c'est sûr.
( il devait être en train de causer sur phpcs ! )
ça me permet de le saluer :
salut à toi joyeux contribuable.
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
personellement, je préfère un modèle objet ou seuls les id relient le js au html... séparer les langages, on passe notre temps à faire ça... pourquoi ici on devrait les mélanger ?

avec mysql 5, on nous demande de faire : CALL procedure(parametres); plutot que de faire update ou insert... pour les select, je ne sais plus comment on peut se passer d'un select classique, mais on devrait pouvoir le faire, et ça permet de séparer le sql du php,

les moteurs de templates permettent de séparer le html du php

les balises link et script devraient séparer le js du html et le css du html

bref, mélanger ça comme ça... je ne suis pas sur que ça soit à la mode, et sur un gros projet, ça peut porter à confusion...
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
salut Anteane,

||textarea qui ne gere pas la balise alt

ah bon ?

<textarea name="txt"
alt="toto">exemple</textarea>
<Script type="Text/JavaScript">
alert(txt.alt);
</Script>

je plaisante !!!
alt est bien pris en compte par textarea
( enfin, tel quel, et testé uniquement avec IE ).

quel est le problème ?
on peut voir un bout de script ?

mais peut-être inutile d'encombrer ici :
contacts par http://www.digipills.com/cerbermail/?7k0USwXbQj
ou mon mail direct (il traine hélas), ou par mon site, ou sur
le forum... ou ... comme tu veux.

et on mettra la réponse si ça peut servir à tous.
@+
anteane
Messages postés
2
Date d'inscription
vendredi 25 août 2006
Statut
Membre
Dernière intervention
26 août 2006

Bonjour et merci pour ce script... seul petit hic comment controler la saisie d'un textarea qui ne gere pas la balise alt?

Merci
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
l'erreur de Guillaume Voisin :
on faisait appel à ConForm dans le onsubmit de la balise <form...>
et il n'y avait pas de pour envoyer.
l'intrevention permettra de faire évoluer ConForm.
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
on peut en "causer" ailleurs, inutile de saturer ici.
le formulaire est "bizarre" sur l'adresse donnée :
pas de submit, pas de </form>, erreur ligne 16...
et je pense que tout vient de là.
contact : http://viadresse.com?59654018, ou par mon site
ou mail : marcel point bultez arobase tiscali point fr
@+
guillaumevoisin
Messages postés
4
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
25 juillet 2006

Oui mais j'ai essayé toutes les possibilités et ca ne fonctionne toujours pas :s.
La page est la suivante: http://guiness.ovh.org/mairie/remarques.php
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
je suppute que c'est pour contrôler si le
nombre de caractères saisis est bien = 5 ?

si oui :

si rem est bien le name du formulaire

ce serait d'ailleurs à contrôle à mettre en standard,
ça pourrait encore servir.

@+
[ on ne dit pas je suppute, mais je suis une péripatéticienne ]
guillaumevoisin
Messages postés
4
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
25 juillet 2006

Non je me suis planté et ca a posté ss faire gaffe, mon souci réel c'est que je n'arrive pas a faire fonctionner un check de format:

Voilà ceci ne marche pas, sinon le script est terrible ;)
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
merci Coucou747,
>>pas con de planquer ça dans le alt
excellente suggestion de TGuerlus, encore merci à lui !
j'avais aussi pensé mettre ça dans style="...controle='...'..."
car l'attribut ...controle="..." n'est pas géré par "le moteur Gecko"
@+
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
j'allais oublier : 10/10
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
c'est pas con de planquer ça dans le alt, j'ai fais le même genre de sources, mais je penses que passer par de l'objet est ici bien plus pratique, et séparer javascript et html, même pour une vérification de formulaire, reste un bon choix...
Avec ma source, pour le moment, il faut donner une preg pour chaque champ, ta source m'a donné l'idée de mettre des pregs par défaut pour des champs comme url, champs, dates etc...
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
? contrôler ? une option ?
une ligne dans un select donc ? et pourquoi faire ?
une telle ligne ne peut-être mise que par
programme, inutile de contrôler ?
ou je n'ai rien compris ?
remedywu
Messages postés
2
Date d'inscription
lundi 6 février 2006
Statut
Membre
Dernière intervention
5 juillet 2006

Hello.
Tout d'abord bravo pour le code.
Mais j'ai un petit problème.
Dans le cas d'un select avec du code php qui requete une base les controles avec alt ne sont pas fait dans le option à cause du :
echo "<option value='$machin'> $machin </option>";
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
effectivement, er je n'ai pas pensé à ce genre de cas.
je vais ajouter une possibilité avec un nouveau type.
en attendant, on peut quand même résoudre le problème
comme ci-dessous.

<form name="frm"....>


@+
aspkiller
Messages postés
2
Date d'inscription
vendredi 14 janvier 2005
Statut
Membre
Dernière intervention
25 novembre 2007

Bonjour,
Ce script est génial, mais les cases à cocher fonctionnent exclusivement quand il y en a plusieurs et non une seule

comme lorsque l'on veut qu'une personne accepte les conditions générales une case suffit

Merci avance si vous avez une solution car mini:1 et maxi:1 ne fonctionne pas

Merci par avance
@+
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
je vais suivre cette suggesion tguerlus,
mettre les contrôles dans alt="..."
merci.
tguerlus
Messages postés
43
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
3 mai 2005

L'attribut "alt" me semble le mieu placé pour cela. Les balises ont toutes cet attribut. De plus tous les navigateurs savent afficher les balises de formulaire, donc cet attribut est actuellement inutilisé.
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
salut tgerlus,
bravo pour ton script, il va sûrement
me permettre d'améliorer le mien.
je ne connaissais pas assez les moteurs
Gecko pour me douter que l'attribut
n'était pas accessible.
peut-être en le mettant dans
style="...controle=''...." ?
tguerlus
Messages postés
43
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
3 mai 2005

Dommage que ce ne soit pas compatible avec les moteurs Gecko, l'attribut controle ne s'ajoute pas au modele objet.

Je te propose cette solution -> http://www.javascriptfr.com/code.aspx?id=28766

Merci pour l'idée tout de même. Il faut rendre à césar....
WindPowa
Messages postés
121
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
10 mars 2006

Joli :)

Le code est un peu en désordre au premier regard mais on s'y retrouve ;)
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
29
ce nom ne sert qu'à l'affichage
des erreurs, pour l'utilisateur
donc on y met quelquechose
de signifatif ( enfin on tente de )
@+
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
sympas... cependant, on peut mettre deux mots ou plus dans noms...