Controle de formulaire

matsay81 Messages postés 16 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 10 juillet 2008 - 20 juin 2007 à 11:33
matsay81 Messages postés 16 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 10 juillet 2008 - 20 juin 2007 à 17:09
Bonjour,

Voilà je viens de créer un formulaire, et un script de controle.
Maintenant je voudrais l'améliorer mais j'ai un petit souci.
Actuellement, il me controle une chose après l'autre et me change la couleur de fond de l'imput.
Je souhaite qu'il controle tout d'un coup et que des label soit marqué à côte de tous les elements manquants.
voilà mon script
<script language="JavaScript">
<!--
var selectchantier_type=0;var selectchantier_annee=0;var selectchantier_energie=0;var select_financement=0;
function logement(){selectchantier_type=1;}
function annee(){selectchantier_annee=1;}
function energie(){selectchantier_energie=1;}
function pret() {select_financement=1;}


function verifieforma(document)
{
if (!Obligatoire(document.misejour.client_origine,"\nVeuillez noter l'origine du contact\n\n"))return false;
if (!Obligatoire(document.misejour.client_nom,"\nVeuillez noter le nom du client\n\n"))return false;
if (!Obligatoire(document.misejour.client_nom_voie,"\nL'adresse est manquante\n\n"))return false;
if (!Obligatoire(document.misejour.client_cp,"\nLe code postal n'est pas renseigné ou incomplet\n\n"))return false;
if (!Obligatoire(document.misejour.client_ville,"\nLa ville du client n'est pas renseigné ou incomplet\n\n"))return false;
if (!Obligatoire(document.misejour.client_tel,"\nLe numéro de téléphone n'est pas renseigné ou incomplet\n\n"))return false;


if (selectchantier_type==0){ alert ("\nDe quel type de logement s'agit-il? :\n\n- Appartement &amp; habitation collectif ?\n- Maison individuelle ?\n\n");return(false);}
if (selectchantier_annee==0){ alert ("\nQuel est l'année de construction du logement ? :\n\n- Avant 1975 ?\n- Après 1975 ?\n\n");return(false);}
if (selectchantier_energie==0){ alert ("\nQuelle est l'énergie principale après travaux ? :\n\n- Electricité ?\n- Combustible ?\n\n");return(false);}
if (select_financement==0){ alert ("\nLa prestation travaux fait-elle l'objet d'un financement ? :\n\n- Oui ?\n- Non ?\n\n");return(false);}


if (!Obligatoire(document.misejour.chantier_surface,"\nLa surperficie du logement n'est pas renseigné\n\n"))return false;
if (!Obligatoire(document.misejour.chantier_pieces,"\nLe nombre de pièce principale n'est pas renseigné\n\n"))return false;
if (!Obligatoire(document.misejour.chantier_date_fin,"\nLa date de fin de chantier n'est pas renseigné ou incomplète\n\n"))return false;




}


function Obligatoire(MonInput, MonMessage)
{
 if (MonInput.value == "")
 {
  alert("\n"+MonMessage);
        MonInput.style.backgroundColor="#FF6600";
        MonInput.focus();
        return false;
 } 
 return true;
}


</script>

Quelqu'un peut-il m'aider?
Merci
Mathieu

7 réponses

the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
20 juin 2007 à 11:58
Bonjour,
une petite piste:
    Tu déclares un tableau contenant des entrées de type tableau de cette forme [inputHtml, message d'erreur].
    Dans ta fonction de controle, tu parcours ce tableau et tu  affiche le message à coté ou en dessous (enfin ou t'as de la place).
    Un exemple ci dessous:
    var controles = [ [document.misejour.client_origine, "Veuillez noter l'origine du contact"], [document.misejour.client_nom, "Veuillez noter le nom du client"]];
    function ctrl(){
       for(var i = 0; i < controles.length; i++){
          if( controles[i][0].value.length == 0 ){
             /* Je le place à coté */
             var div = document.createElement('div');
             var s = div.style;
             s.position = 'absolute';
             s.top = controles[i][0].style.top;
             s.left = (controles[i][0].style.offsetLeft + controles[i][0].style.clientWidth + 5) + 'px';
             div.innerHTML = controles[i][1];
             controles[i][0].parentNode.appendChild( div );
             controles[i][0]..style.backgroundColor="#FF6600";
          }
       }      
    }

Bon le positionnnement ne marchera pas mais à toi de plancher là dessus.
Bien cordialement,
Pierrick
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
20 juin 2007 à 14:10
Bonjour,

au lieu de :

if (!Obligatoire(document.misejour.client_origine,"\nVeuillez noter l'origine du contact\n\n"))return false;
if (!Obligatoire(document.misejour.client_nom,"\nVeuillez noter le nom du client\n\n"))return false;


...


mettre :

var lib= ""
if (document.misejour.client_origine.value.length==0)
    {    lib+="\r\nVeuillez noter l'origine du contact";
        

document.misejour.client_origine.style.backgroundColor="#FF6600";


        
document.misejour.client_origine.focus();
}
if (document.misejour.client_nom.value.length ==0)

    {    lib+="\r\nVeuillez noter le nom du client"; 
        
document.misejour.client_nom.style.backgroundColor="#FF6600";
 
        
document.misejour.client_nom.focus();
}


...

if ( lib.length > 0 )
       { alert (lib);
         return false;   }
else   { return true;   }







( une fonction peut bien sûr remplacer ça )

<hr />


Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
0
matsay81 Messages postés 16 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 10 juillet 2008
20 juin 2007 à 14:37
Merci de votre rapidité,

Alors je viens d'essayé vos 2 solutions, la première je n'arrive pas à la faire marché,
la deuxième c'est nikel mais je voudrais aussi qu'il me mette un commentaire à côté de chaque élément manquant.
Merci encore
Mathieu
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
20 juin 2007 à 14:49
>>mais je voudrais aussi qu'il me mette un commentaire à côté de chaque élément manquant.

    comment tu faisais ça dans ta version ?
    c'est quoi comme commentaire ?

    mais pour ça

        mets des <label> vides et remplis les
        mets des champs cachés et montre les
        regarde du coté des ...child... qui permettent d'ajouter en dynamique
        ....etc...

<hr />
Cordialement                Bul     [mon Site]     [M'écrire]
<hr />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
matsay81 Messages postés 16 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 10 juillet 2008
20 juin 2007 à 15:31
Et comment fait-on pour remplir un label vide, je n'y arrive pas ??
0
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
20 juin 2007 à 15:34
Désolé si ma réponse ne marche pas tu as une erreur pour l'info?
Pour mêttre du texte dans le label (ou autre élément XML) utilise innerHTML...
document.getElementById('id_du_label').innerHTML = 'Veuillez noter l'origine du contact';
Codialement
0
matsay81 Messages postés 16 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 10 juillet 2008
20 juin 2007 à 17:09
Super tout marche, Merci à tous
0