script n'ont pris en compte pour validation email - HTML/CSS - Programmation
MarshPosté le 16-01-2006 à 13:57:56
Salut a toutes et a tous,
bon voila j'ai un petit formulaire et je veux faire une verification de la validité de certains champs sur l'evenement onClick de mon bouton envoyer. Pour ca j'ai fai un script en javascript dans un fichier externe et quand je fai des test il ne me prend pas en compte l'evenement onClick, pourtant j'ai bien déclarer dans le <head> la presence de mon fichier javascript voila le code de mon bouton envoyer: <input type="submit" name="btnEnvoyer" value="Envoyer" onclick="verifFormulaire(this.formulaire);" tabindex="11" align="right" />
et voici la déclarartion de ma fonction javascript: function verifFormulaire(formulaire) {bla bla bla bla
dans mon <form> j'ai mis name="formulaire" donc ca devarit passer normalement mais j'ai rien du tout.....
si quelqu'un pouvait m'eclairer
Message édité par bedomon le 17-01-2006 à 11:00:53
Publicité
Posté le 16-01-2006 à 13:57:56
omega2
Posté le 16-01-2006 à 14:16:25
utilise l'évènement onsubmit de la balise <form>.
Message édité par omega2 le 16-01-2006 à 14:16:43
gatsu35
Blablaté par Harko
Posté le 16-01-2006 à 14:16:39
et on pourrait voir le code HTML et Javascript de ta page, parce que ton charabia il ne nous donne rien du tout
bedomon
La vérité est ailleurs
Posté le 16-01-2006 à 14:21:53
mouais je me douatis que je ne savais pas m'expliquer le fichier javascripts: //fonction de verification du formulaire function verifFormulaire(formulaire) { mail = document.verif.txtMail.value; var place = mail.indexOf("@",1); var point = mail.indexOf(".",place+1); if ((place > -1)&&(mail.length >2)&&(point > 1)&& (formulaire.txtNomSociete.value != "" ) && (formulaire.telSociete.value!="" ) && (formulaire.txtNomContact.value != "" ) && (formulaire.textAreaQuestion.value!="" )&& if(formulaire.menuPays.value=="France"{(formulaire.telSociete.length==10} ) ((formulaire.renseignements.checked !=false) || (formulaire.devis.checked !=false) || (formulaire.rdv.checked !=false)) { document.verif.submit(); } else{ if (formulaire.txtNomSociete.value == "" ){ alert('Veuillez saisir le nom de la société'); } else{ if (formulaire.telSociete.value=="" ) || (formulaire.telSociete.length !=10){ alert('Veuillez saisir le numéro de téléphone '); } else{ if (formulaire.txtNomContact.value == "" ){ alert('Veuillez saisir votre nom'); } else{ if ((formulaire.renseignements.checked==false) || (formulaire.devis.checked==false) || (formulaire.rdv.checked==false)){ alert('veuillez coché votre type de demande') } if (formulaire.textAreaQuestion.value == "" ){ alert('Entrez votre demande, svp !!'); } else{ alert('Entrez une adresse e-mail valide, svp !!'); } } } } } } }
il faut employer la fonction verifFormulaire sur l'évènement onsubmit du <form>
et dans verifFormulaire, après chaque Alert(); il faut faire un return false; afin de dire au navigateur, "Va te faire foutre, je ne veux pas que tu envoies le formulaire".
sion tu peux virer cette ligne en début de ta page : <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
et cette ligne de bouseux : <script language="javascript1.5" src="scripts/verif_formulaire.js"></script> tu me la transforme en : <script type="text/javascript" src="scripts/verif_formulaire.js"></script>
Merci
Je rajouterai aussi que de nos jours on accède aux éléments d'une page via leur id : ma monelementenvariable = document.getElementById("monelement" );
dans ton cas c'est pas la mort on va dire. et n'oublie surtout pas de faire aussi les tests coté serveur, c'est extrêmement important. Car le javascript, ca se contourne les doigts dans le nez
Message édité par gatsu35 le 16-01-2006 à 14:32:30
et ce que tu dis sur l'aaces au element par leur id cela veu dire qu'on est plus obligé de renseigné le: name="" ??? ou alors j'ai pa tou compris encore
pour accéder aux éléments d'un formulaire, on utilise normalement les id, ça paraît lourd c'est vrai mais c'est normalisé. name c'est déprécié au niveau javascript, mais name doit être utilisé lorsque l'élément sera posté au serveur. tu me suis ??
euh en fait g sui perdu regarde le bou de ce code: <legend>Coordonnées </legend> <label for="txtNomSociete" class="formlabel">Nom de la société: </label> <input type="text" name="txtNomContact" id="txtNormal" tabindex="12" onkeypress="if (this.value.length>20) this.style.width=this.value.length*0.5+'em'" /><br /> <label for="txtNomContact" class="formlabel">Nom du contact : </label> <input type="text" name="txtNomContact" id="txtNormal" tabindex="1" onkeypress="if (this.value.length>20) this.style.width=this.value.length*0.5+'em'" /><br />
le deux id ont le meme nom je m'en seravit pour ma feuille css mais en fait je crois que je vais utiliser des class pour ma css. pour les id il faut qu'il soit unique pour chaque element???
donc si j'ai bine compris moi qui avait mis ca : formulaire.renseignements.checked !=false
faut que je le remplace par ca: formulaire.getElementById("renseignements" ).checked!=false
euh en fait g sui perdu regarde le bou de ce code: <legend>Coordonnées </legend> <label for="txtNomSociete" class="formlabel">Nom de la société: </label> <input type="text" name="txtNomContact" id="txtNormal" tabindex="12" onkeypress="if (this.value.length>20) this.style.width=this.value.length*0.5+'em'" /><br /> <label for="txtNomContact" class="formlabel">Nom du contact : </label> <input type="text" name="txtNomContact" id="txtNormal" tabindex="1" onkeypress="if (this.value.length>20) this.style.width=this.value.length*0.5+'em'" /><br />
le deux id ont le meme nom je m'en seravit pour ma feuille css mais en fait je crois que je vais utiliser des class pour ma css. pour les id il faut qu'il soit unique pour chaque element???
comme tu peux le voir, le for du label est associé au id de l'élément mais un id est unique dans une page, si tu veux style, utilise alors une classe. mais tu peux très bien spécifier l'id s'il a du styling particulier
getElementById est une méthode de l'objet document et c'est tout, puisqu'un id est unique dans une page, ben getElementById n'est valable que sur l'objet document, qui représente ta page.
sinon t'emmerde pas 90% des developpeurs font : monformulaire.montrucaveclename.savaleur
même si ce n'est pas du tout correct, tu vas pas non plus tout refaire
autant prendre de bonne manier des le departs alors je refair mon fichier JS
je vien de me rendre compte de mon erreur c'est qu'avec dreamweaver 8 quand on tape id il fait apparaitre un menu contextuelle avec les differentes entré qu'il y a dans le feuille de style
Message édité par bedomon le 16-01-2006 à 15:30:19
c'est pas tous les jours qu'on voit des personnes nous écouter, surtout quand on leur dit: "t'emmerde pas, ton truc il marche, te fais pas chier à tout modifier" chapeau.
heu de quelle erreur tu parles avec dreamweaver 8 ?
ah et on ne se moque pas du mini bout de javascript en plein milieu j'ai voulu essayer un truc pour rendre enalbe ou visible la zone de texte juste a coté du menu des pays mais a marche po.... mais je m'y replongerai plus tard enfin bon si quelqu'un a la mega solution de la mort qui tue moi je ne dis pas non...
code tiens essaye avec ça, ça devrait mieux marcher:
Code :
function verifFormulaire(){
//test sur le mail
mail = document.getElementById('eMail').value;
var place = mail.indexOf("@",1);
var point = mail.indexOf(".",place+1);
if ( place > -1 && mail.length >2 && point > 1 ){
alert('Entrez une adresse e-mail valide, svp !!');
returnfalse;
}
//test du nom de societe
if (document.getElementById("nomSociete" ).value == "" ){
alert('Veuillez saisir le nom de la société');
returnfalse;
}
//test sur le telephone
if (document.getElementById("tel" ).value == "" || document.getElementById("tel" ).value.length !=10){
alert('Veuillez saisir un numéro de téléphone valide ');
returnfalse;
}
// test sur le contact
if (document.getElementById("nomContact" ).value == "" ){
alert('Veuillez saisir votre nom');
returnfalse;
}
// test sur le type de demande
if (document.getElementById("chkRenseignements" ).checked==false && document.getElementById("chkDevis" ).checked==false && document.getElementById("chkRdv" ).checked==false){
alert('veuillez coché votre type de demande')
returnfalse;
}
// test sur la demande
if (document.getElementById("txtAreaCommentaire" ).value == "" ){
alert('Entrez votre demande, svp !!');
returnfalse;
}
// submit si tout est ok
returntrue;
}
J'en ai profité pour la refaire un peu c'était vraiment trop dégueu ton truc.
Par contre ce genre de système de controle je trouve ça a vomir! Je saisis je valide message d'erreur ... Je re-saisis je re-valide re-message d'erreur ... Je re-re-saisis je re-re-valide re-re-message d'erreur! Fais plutôt un système qui controle tous les champs en erreur et change leur couleur de fond en rouge ( par exemple) quand ce n'est pas bon, le tout accompagné d'un petit message qui va bien!
oula pas de pb mais chaque chose en son temps j'ai pensé deja a ce que tu me propose mais pour le moment je fais un script a la hauteur de mon niveau et je me suis appuyer sur le mini tuto de cette adresse http://www.allhtml.com/javascript/javascript491.php et ensuite je te ferai l'ultime script of verification...
si tu veux bien me donner la demarche a suivre pour ta methode je me lancerais bien mais je ne vois pas du tout comment je dois commencer et comment je dois coder tout ca
Message édité par bedomon le 16-01-2006 à 17:35:29
bon alors maintenant quand je clique sur le bouton il me prend en compte le script mais (ily a toujours un mais) il me fais n'importe quoi avec et au niveau de la verification de l'email c'est pas ca du tout..... en ayant repris le code d'anpajari ca donne ca le probleme que je rencontre sont que mem si l'adresse est valide ca marche pas et si il n'y a rien dans la zone de texte ca me met pas de message d'erreur
Code :
function verifFormulaire(){
//test sur le mail
var arobase = document.formulaire.indexOf("@" );
var point = document.formulaire.lastIndexOf("." );
var espace = document.formulaire.indexOf(" " );
if (!((arobase != -1) && //presence d'un @ dans l'email
(arobase != 0) && //a une position autre que 0
(point != -1) && //presence d'un point
(point > arobase +1) && //presence d'un caractere entre le @ et le point
(point < document.formulaire.getElementById("eMail" ).length - 1) && //le point n'est pas en derniere place de l'email
(espace == -1))){//pas d'espace dans l'adresse
returnfalse;
}
//test du nom de societe
if (document.getElementById("nomSociete" ).value == "" ){
alert('Veuillez saisir le nom de la société');
returnfalse;
}
//test sur le telephone
if (document.getElementById("tel" ).value == "" || document.getElementById("tel" ).value.length !=10){
alert('Veuillez saisir un numéro de téléphone valide ');
returnfalse;
}
// test sur le contact
if (document.getElementById("nomContact" ).value == "" ){
alert('Veuillez saisir votre nom');
returnfalse;
}
// test sur le type de demande
if (document.getElementById("chkRenseignement" ).checked==false && document.getElementById("chkDevis" ).checked==false && document.getElementById("chkRdv" ).checked==false){
alert('veuillez coché votre type de demande')
returnfalse;
}
// test sur la demande
if (document.getElementById("commentaire" ).value == "" ){
alert('Entrez votre demande, svp !!');
returnfalse;
}
// submit si tout est ok
returntrue;
}
Message édité par bedomon le 17-01-2006 à 11:04:53
Marsh Posté le 16-01-2006 à 13:57:56
Salut a toutes et a tous,
bon voila j'ai un petit formulaire et je veux faire une verification de la validité de certains champs sur l'evenement onClick de mon bouton envoyer.
Pour ca j'ai fai un script en javascript dans un fichier externe et quand je fai des test il ne me prend pas en compte l'evenement onClick, pourtant j'ai bien déclarer dans le <head> la presence de mon fichier javascript
voila le code de mon bouton envoyer:
<input type="submit" name="btnEnvoyer" value="Envoyer" onclick="verifFormulaire(this.formulaire);" tabindex="11" align="right" />
et voici la déclarartion de ma fonction javascript:
function verifFormulaire(formulaire)
{bla bla bla bla
dans mon <form> j'ai mis name="formulaire" donc ca devarit passer normalement mais j'ai rien du tout.....
si quelqu'un pouvait m'eclairer
Message édité par bedomon le 17-01-2006 à 11:00:53