Je cherche une fonction pour contrôler les champs dans un fo

Eléphant du PHP | 92 Messages

08 mars 2010, 15:54

Je cherche une fonction pour contrôler les champs dans un formulaire…

Normalement j’utilise les javascripts

Voici un exemple :

Php :

Code : Tout sélectionner

<form method="post" action=" enregistre.php" name="FormToto" id=" FormToto " onsubmit="return check()"> <tr> <td class="tdLabel">Pr&eacute;nom<span class="rouge2">**</span></td> <td><input type="text" name="prenom" id="prenom" /></td> </tr>
Et javascript :

Code : Tout sélectionner

function check() { if (document. FormToto.prenom.value=="") { alert("Ecrivez votre PRENOM s\'il vous plait !"); return false; }
Mais j’aimerais bien avoir quelques choses plus élaboré…
En fait, s’il y a plusieurs champs obligatoires, l’utilisateur va chercher lesquels champs…
J’aimerais bien qu’il y a un étoile rouge à côté des champs lorsque l’utilisateur n’a pas rempli le champs comme on fait dans asp.net

En fait, dans asp.net, il y a une fonction :

Code : Tout sélectionner

<asp:label id="ErrorLabel" runat="server" ForeColor="#FF3300" Visible="False">Vous avez oublié de remplir les champs obligatoires suivants :</asp:label> <asp:validationsummary id="Validationsummary1" runat="server" displaymode="BulletList" ShowSummary="True" HeaderText="Vous avez oublié de remplir les champs obligatoires suivants :"></asp:ValidationSummary> <asp:textbox id="mFirstNameTextBox" runat="server" style="text-transform:uppercase"></asp:textbox> <asp:requiredfieldvalidator id="Requiredfieldvalidatorprenom" runat="server" errormessage="PRENOM DE L'ENFANT" text="*" controltovalidate="mFirstNameTextBox"></asp:requiredfieldvalidator>

Mammouth du PHP | 985 Messages

08 mars 2010, 17:00

Bonjour,
Je te conseille dans un premier temps, ce lien:
http://www.phpdebutant.org/article118.php
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 453 Messages

08 mars 2010, 18:25

Attention aux entrées maladroites sur un forum. C'est très mal perçues. (bonjour, svp, merci ) (!!)

Et l'eau,
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours !
*rendons à César, ce qui lui appartient.
Règle n°3 : toujours valider son code
Règle n°4 : toujours commencer par le HTML et le CSS avant de se lancer dans un langage dynamique
*erf, j'extrapole.

Là ton code html est tout simplement faux !
L'élément form ne peut pas être l'enfant de l'élément table ou tr. ;)

Après ton code js me parait intrusif/obstructif et j'ai aussi l'impression que tu fais une petite erreur : Tu n'es pas obligé d'échapper vu que tu utilises des doubles quotes. Je ne suis pas fortiche en js (si quelqu'un peut me dire si j'ai fait une faute, je le remercie), mais il me semble que ce serait mieux de faire ceci :

Code : Tout sélectionner

function check(){ var formulaire = document.getElementsByTagName("form").item(0); if(formulaire){ formulaire.onsubmit = function(){ var prenom = document.getElementById("prenom"); if(prenom){ if(prenom.value == ""){ /* une RegEx c'est mieux ;) */ alert("prénom doit contenir une valeur"); /* créer dynamiquement les balises et/ou une valeur, c'est mieux */ return false; } } } } } window.onload = function(){ check(); }
Après l'HTML :
<!-- suite -->
	<body>
		<form method="post" action="<?php echo htmlspecialchars($_SERVER["SCRIPT_NAME"]); ?>">
                    <fieldset>
                        <legend>mon formulaire</legend>
                        <p>
                            <label for="prenom">prénom : <input type="text" name="prenom" id="prenom" /></label>
                            <input type="hidden" name="__envoi" value="__ok" />
                            <input type="submit" name="envoi" value="vas-y" />
                        </p>
                    </fieldset>
                </form>
	</body>
<!-- suite -->
et pour le php :
<?php
        if(isset($_POST["__envoi"]) && $_POST["__envoi"] === "__ok"){
            if(trim($_POST["prenom"]) === ""){ // un RegEx c'est mieux 
                echo "prénom ne doit pas être vide";
            }else{
                echo "ok";
                // faire action !
            }
        }
?>
Ce qui donne :
<?php
        if(isset($_POST["__envoi"]) && $_POST["__envoi"] === "__ok"){
            if(trim($_POST["prenom"]) === ""){
                echo "prénom ne dit pas être vide";
            }else{
                echo "ok";
                // faire action !
            }
        }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
	<head>
		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
		<title>formulaire</title>
                <script type="text/javascript">
                    function check(){
                        var formulaire = document.getElementsByTagName("form").item(0);
                        if(formulaire){
                            formulaire.onsubmit = function(){
                                var prenom = document.getElementById("prenom");
                                if(prenom){
                                    if(prenom.value == ""){
                                        alert("prénom ne dit pas être vide");
                                        return false;
                                    }
                                }
                            }
                        }
                        
                    }
                    window.onload = function(){
                        check();
                    }
                </script>
	</head>

	<body>
		<form method="post" action="<?php echo htmlspecialchars($_SERVER["SCRIPT_NAME"]); ?>">
                    <fieldset>
                        <legend>mon formulaire</legend>
                        <p>
                            <label for="prenom">prénom : <input type="text" name="prenom" id="prenom" /></label>
                            <input type="hidden" name="__envoi" value="__ok" />
                            <input type="submit" name="envoi" value="vas-y" />
                        </p>
                    </fieldset>
                </form>
	</body>
</html>
J'ai fait simple. À toi d'améliorer. Au passage, je n'ai pas vérifié si mon code est valide. Cependant, il me parait juste. À vérifier...

<mode vendredÿ="on">
euh, il y en a qui continu à coder en asp ? euh asp, c'est pas str_anagrame(traduction("not")) ? // pas
</mode>

Bon code

@mere-teresa : si tu lies ce message, peux tu me dire ta règle n°1, stp ?
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphant du PHP | 92 Messages

08 mars 2010, 23:32

Bonjour,

Je suis vraiment désolé...
alors je reformule ma demande :

Bonjour,

Comment je peux redéfinir la visibilité d’une champ par javascript

Pourqoui j’en ai besoin ?

Parce que je vais faire une contrôle des champs dans un formulaire…

Voici une partie de mon code html :

Code : Tout sélectionner

<form method="post" action="action/enregistre.php" name="FormToto" id=" FormToto " onsubmit="return check()"> <table class="tableIdentification" border="0" cellspacing="0" cellpadding="0"> <tr> <td class="tdLabel">Pr&eacute;nom<span class="rouge2">*</span></td> <td><input type="text" name="prenom" id="prenom" /> <span class="rouge1<input type="hidden" name="prenomHidden" id="prenomHidden" value="*"/><span class="rouge1"></td> </tr> </table> <p> <span class="rouge2">*</span> les champs doivent &ecirc;tre compl&eacute;t&eacute;s.</p> <p> <input type="submit" name="submit" value="Envoyer" class="bouton"/> <input type="reset" name="reset" value="Effacer" class="boutonEffacer" /> </p>
Et voici le code javascript :

Code : Tout sélectionner

function check() { if (document.FormToto.prenom.value=="") { alert("Ecrivez votre PRENOM s\'il vous plait !"); return false; } }
Que dois je ajouter, dans mon code javaScript, pour que mon imput prenomHiddent devient visible lorsque l’utilisateur ne remplis pas le champ ?

En fait il est invisible quand il est < input type="hidden"> et visible quand il est <input type="text">