begin process at 2012 05 30 03:04:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Autre

 > 

Validation formulaire avec un lien


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Validation formulaire avec un lien

samedi 27 décembre 2008 à 12:44:37 | Validation formulaire avec un lien

webmcmaster

Bonjour,
Habituellement et peut-être à tort, j'utilise la fonction : <a href="javascript:document.form.submit()">Valider</a> pour confirmer un formulaire en lieu et place d'un submit. Afin de contrôler certains champs, je suis amené à utiliser : onsubmit="return validate(this)" dans la balise form. le script fonctionne très bien avec un bouton submit.
Hélas, je n'ai pas trouvé sur le net de solutions permettant d'associer le controle des champs et mon lien javascript :(
Auriez-vous une petite idée ?
Merci d'avance
samedi 27 décembre 2008 à 13:23:29 | Re : Validation formulaire avec un lien

Bul3

Membre Club

bonjour,
>>Habituellement et peut-être à tort, j'utilise la fonction
>>: <a href="javascript:document.form.submit()">Valider</a>
>>pour confirmer un formulaire en lieu et place d'un submit.

je ne sais pas si tu as tort...
mais
1° le bouton submit et le onsubmit dans le formulaire sont fait pour ça
2° tu as pensé à ceux qui ne veulent pas du javascript ?
    ton formulaire ne sera jamais envoyé.
3° en faisant comme tu fais, la fonction du onsubmit n'est pas exécutée

rien ne t'empêche de mettre le style que tu veut sur le bouton submit

si tu y tiens à tout prix, lance la fonction de contrôle
dans le href et fais-y le submit... mais bon, ce n'est pas la
manière normale de faire....

Cordialement

           [mon Site] [M'écrire] Bul          

samedi 27 décembre 2008 à 18:27:53 | Re : Validation formulaire avec un lien

webmcmaster

Merci de ta réponse bul3,
Il est vrai qu'avec du css, tout est possible au niveau de la mise en forme...
En fait, je pensais une nouvelle fois peut être à tort que le fait de pratiquer ainsi et donc de manière moins conventionnelle, pourrait éviter les validations intempestives dues à des attaques robots ou autres, compte tenu que sans un clic sur le bouton adéquat, aucune validation du formulaire n'est possible ? En quelque sorte, une forme d'anti-spam naturel ?
Effectivement, je sais que certaines personnes peuvent désactiver le JavaScript via leur navigateur... Et, bien que je n'en comprenne pas complètement le sens, je pense que ces derniers suffisamment avertis sur le sujet sauront réactiver le JavaScript au moment adéquat... car par précautions, ils peuvent également désactiver leur ordinateur du réseau internet... c'est moins risqué :) !
Sinon tu as tout compris, la fonction onsubmit n'est pas exécutée en l'état... mais sur le principe de connaissance, je serai heureux de connaître la formule magique qui permettrait de valider un formulaire à l'aide d'un lien JavaScript, tout en gérant le contrôle du script...
Pourrais-tu m'éclairer à ce sujet via un exemple ?
Merci d'avance...

dimanche 28 décembre 2008 à 09:10:41 | Re : Validation formulaire avec un lien

Bul3

Membre Club

>>valider un formulaire à l'aide d'un lien JavaScript, tout en gérant le contrôle du script
ben... j'ai répondu.
dans ton lien, avant d'envoyer le formulaire, appelle la fonction de contrôle.

>>pourrait éviter les validations intempestives dues à des attaques robots ou autres
bah... cliquer sur un lien ou sur un bouton... c'est pareil.
le spam n'a aucun rapport avec ceci.

>>
ces derniers suffisamment avertis sur le sujet sauront réactiver le JavaScript
ce n'est pas le fait de savoir, c'est qu'ils refusent.
et pourquoi mettre du code là où ce n'est pas nécessaire ?
et tu te réserves de futures surprises en n'utilisant pas les méthodes standards...


          [mon Site] [M'écrire] Bul        

dimanche 28 décembre 2008 à 12:02:38 | Re : Validation formulaire avec un lien

webmcmaster

Merci bul3,

J'ai bien noté tes remarques...
Sinon : Appeler la fonction de contrôle avant d'envoyer le formulaire... c'est justement ce que je n'arrive pas à mettre en place, malgré mes recherches sur le net... j'en suis là :

1 - <a href="#" onclick="formcontact.onsubmit();">Valider</a>
La fonction onsubmit est bien exécutée, mais une fois tous les contrôles effectués par le script, l'action submit n'est pas appelée, donc le formulaire n'est pas transmis.

2 - <a href="javascript:document.getElementById('formcontact').onsubmit();">Valider</a>
Une page blanche apparait avec le valeur false et ça s'arrête là.

Dans les deux cas, je ne sais pas ajouter la partie submit dans le lien afin d'envoyer le formulaire après le contrôle. Et, si :

3 - <a href=javascript:document.getElementById('formcontact').onsubmit(); onClick="MM_callJS('formcontact.submit();')">Valider</a>

Le formulaire est envoyé sans contrôle... :( !
 
Aurais-tu une idée de syntaxe ?
Bonne journée...
dimanche 28 décembre 2008 à 12:42:53 | Re : Validation formulaire avec un lien

Bul3

Membre Club
si tu y tiens...

function CtrEnvoi()
{   contrôles...
    et s'il n'y a pas d'erreurs : formulaire en question.submit();
}

<a href="javascript:void(CtrEnvoi());"....


           [mon Site] [M'écrire] Bul         

dimanche 28 décembre 2008 à 18:38:48 | Re : Validation formulaire avec un lien

webmcmaster

Merci encore bul3,
Mais mes connaissances et mes recherches sur le net ne me permettent pas d'appliquer seul ton idée jusqu'au bout... Si tu le veux bien, j'ai encore besoin de toi :) !
Pourrais-tu remplir les éléments manquants et corriger les énormités afin que cela fonctionne ?
D'avance merci...


<head>
<script type="text/javascript" src="js/formcontact.js"></script>
<script language="JavaScript">
function CtrEnvoi() {
      if ( (reponse == true) ) {
         document.formcontact.submit();
      }
   }
</script>
</head>

<body>
<form method="post" name="formcontact" id="formcontact" action="contact0.php">
....
<a href="javascript:void(CtrEnvoi());">valider</a>
</form>
</body>
dimanche 28 décembre 2008 à 18:52:29 | Re : Validation formulaire avec un lien

Bul3

Membre Club
je veux bien ce que tu veux.. mais
    if ( (reponse == true) ) {
c'est quoi reponse ?

          [mon Site] [M'écrire] Bul         

dimanche 28 décembre 2008 à 19:10:55 | Re : Validation formulaire avec un lien

webmcmaster

Euh... ne tiens pas compte de ma nullité, j'avais juste essayé de m'inspirer d'exemples existants...
En fait, il est nécessaire que la fonction permette au fichier js de contrôler tous les champs souhaités, puis une fois la tâche finie, de valider le formulaire via un <a href="">valider</a>
Si ça peut t'aider, voici ci-dessous le fichier js, lié à la page :
@+


// form validation function //
function validate(form) {
  var objet = form.objet.value;
  var societe = form.societe.value;
  var societeRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var contact = form.contact.value;
  var contactRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var telephone = form.telephone.value;
  var telephoneRegex = /^0[1-689]([-. ]?[0-9]{2}){4}$/;
  var email = form.email.value;
  var emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
  var message = form.message.value;
  var messageRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  if(objet == "") {
    inlineMsg('objet','Quelle est la nature de votre message ?',0);
    return false;
  }
  if(societe == "") {
    inlineMsg('societe','Quel est le nom de votre société ?',0);
    return false;
  }
  if(!societe.match(societeRegex)) {
    inlineMsg('societe','Merci de vérifier le nom de votre société...',0);
    return false;
  }
  if(contact == "") {
    inlineMsg('contact','Qui contacter si besoin ?',0);
    return false;
  }
  if(!contact.match(contactRegex)) {
    inlineMsg('contact','Merci de vérifier vos informations...',0);
    return false;
  }
  if(telephone == "") {
    inlineMsg('telephone','Quel est votre numéro de téléphone ?',0);
    return false;
  }
   if(!telephone.match(telephoneRegex)) {
   inlineMsg('telephone','Merci de vérifier votre numéro de téléphone...',0);
   return false;
  }
  if(email == "") {
    inlineMsg('email','Quelle est votre adresse email ?',0);
    return false;
  }
  if(!email.match(emailRegex)) {
    inlineMsg('email','Merci de vérifier votre adresse email...',0);
    return false;
  }
  if(message == "") {
    inlineMsg('message','Quel est votre message ?',0);
    return false;
  }
  if(message.match(messageRegex)) {
    inlineMsg('message','Merci de vérifier votre message...',0);
    return false;
  }
  return true;
}

// START OF MESSAGE SCRIPT //

var MSGTIMER = 20;
var MSGSPEED = 20;
var MSGOFFSET = 3;
var MSGHIDE = 3;

// build out the divs, set attributes and call the fade function //
function inlineMsg(target,string,autohide) {
  var msg;
  var msgcontent;
  if(!document.getElementById('msg')) {
    msg = document.createElement('div');
    msg.id = 'msg';
    msgcontent = document.createElement('div');
    msgcontent.id = 'msgcontent';
    document.body.appendChild(msg);
    msg.appendChild(msgcontent);
    msg.style.filter = 'alpha(opacity=0)';
    msg.style.opacity = 0;
    msg.alpha = 0;
  } else {
    msg = document.getElementById('msg');
    msgcontent = document.getElementById('msgcontent');
  }
  msgcontent.innerHTML = string;
  msg.style.display = 'block';
  var msgheight = msg.offsetHeight;
  var targetdiv = document.getElementById(target);
  targetdiv.focus();
  var targetheight = targetdiv.offsetHeight;
  var targetwidth = targetdiv.offsetWidth;
  var topposition = topPosition(targetdiv) - ((msgheight - targetheight) / 2);
  var leftposition = leftPosition(targetdiv) + targetwidth + MSGOFFSET;
  msg.style.top = topposition + 'px';
  msg.style.left = leftposition + 'px';
  clearInterval(msg.timer);
  msg.timer = setInterval("fadeMsg(1)", MSGTIMER);
  if(!autohide) {
    autohide = MSGHIDE; 
  }
  window.setTimeout("hideMsg()", (autohide * 1000));
}

// hide the form alert //
function hideMsg(msg) {
  var msg = document.getElementById('msg');
  if(!msg.timer) {
    msg.timer = setInterval("fadeMsg(0)", MSGTIMER);
  }
}

// face the message box //
function fadeMsg(flag) {
  if(flag == null) {
    flag = 1;
  }
  var msg = document.getElementById('msg');
  var value;
  if(flag == 1) {
    value = msg.alpha + MSGSPEED;
  } else {
    value = msg.alpha - MSGSPEED;
  }
  msg.alpha = value;
  msg.style.opacity = (value / 100);
  msg.style.filter = 'alpha(opacity=' + value + ')';
  if(value >= 99) {
    clearInterval(msg.timer);
    msg.timer = null;
  } else if(value <= 1) {
    msg.style.display = "none";
    clearInterval(msg.timer);
  }
}

// calculate the position of the element in relation to the left of the browser //
function leftPosition(target) {
  var left = -286;
  if(target.offsetParent) {
    while(1) {
      left += target.offsetLeft;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.x) {
    left += target.x;
  }
  return left;
}

// calculate the position of the element in relation to the top of the browser window //
function topPosition(target) {
  var top = 0;
  if(target.offsetParent) {
    while(1) {
      top += target.offsetTop;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.y) {
    top += target.y;
  }
  return top;
}

// preload the arrow //
if(document.images) {
  arrow = new Image(7,80);
  arrow.src = "images/msg_arrow.gif";

dimanche 28 décembre 2008 à 20:34:36 | Re : Validation formulaire avec un lien

webmcmaster

Hourra ! Je viens de trouver : solution ci-dessous.
Merci bul3 pour ta rapidité et ton implication...
@bientôt


<head>
<script type="text/javascript" src="js/fichier.js"></script>
<script language="JavaScript">
function submitform()
{
if(document.form.onsubmit())
{
document.form.submit();
}
}
</script>
</head>

<body>
<form method="post" name="form" id="form" action="fichier.php" onsubmit="return validate(this)">
....
<a href="javascript:submitform()">valider</a>
</form>
</body>


Cette discussion est classée dans : formulaire, champs, lien, submit, validation


Répondre à ce message

Sujets en rapport avec ce message

nouvelle page après validation d'un formulaire [ par nicopico ] Bonjour,J'ai créé un formulaire (avec un mailto) qui contient un bonton de validation sur lequel je vérifie les différents champs sur l'évènement "onC faire apparaitre le bouton submit lorsque les champs du formulaire sont remplis [ par lesyeuxbleus ] Bonjour,Comment est-il possible de faire une fonction en js pour faire apparaitre un bouton Submit de l'état "disable" à "enable" lorsque tous les cha Validation automatique de formulaire [ par stanilou ] Salut,J'ai un probleme car je cherche comment faire pour qu'un fomulaire se valide automatiquement (j'ai que des champs hiden (qui ont était modifié a Validation formulaire [ par mdackhe ] Bonjour,J'utilise un champs zone de texte (et pas bouton radio) dans une page PHP avec une propriété name du style name="mon_champs[] " pour pouvoir e problème de validation de champs de formulaire [ par CHABRY ] Afin de contrôler les champs de mon formulaire, j'ai inséré une fonction qui  teste caractère par caractère pour vérifier si Données du formulaire effacées lors du submit [ par way2web ] Bonjour,j'ai créé un formulaire auquel j'ai associé un script de validation pour vérifier l'encodage correct des différents champs, le script fonction Validation des champs d'un formulaire [ par Stephane0000 ] Bonjour,Lorqu'un utilisateur veux s'inscrire sur mon site je souhaite vérifier si le pseudo qu'il a choisi n'existe pas déja et ce sans rafraichir la Retour vers un formulaire [ par jytest ] Bonsoir, J'ai créé un formulaire par html. J'ai fait une validation de champs via le php (ex."email") Mais... Si un champ n'est pas valide, je n'arri Mettre en attente les données d'un formulaire avant publication [ par Laura96 ] Salut ! Je bosse actuellement sur site internet ou je crée un formulaire (Joomla avec le composant Chronoforms). Sur mon site, en partie publique, il formulaire créant lien vers fichiers existants coté client [ par paralaile ] Bonjour, le programme d'un congrès s'affiche dans une page web vue par tout l'auditoire grâce à un vidéo projecteur. Sur cette page s'affiche donc les


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 14,882 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales