Page 1 sur 1

script qui permet de rendre actif un champ de form "dis

Posté : 10 mars 2006, 18:00
par coxine
Je cherche la fonction qui permettrait de rendre les champs de mon formulaire de zone membre actifs si le membre souhaite modifier ses données.
J'ai fait un formulaire, qui récupère par des variables de session les données de la personne qui s'est loguée.
Les champs sont de ce type

Code : Tout sélectionner

<input disabled name="login" type="text" class="form" onfocus="newident(this);" onblur="if(!this.value)alert('vous n\'avez pas saisi \nde login');" value="<?php echo $row_Membres['login']; ?>" />
le bouton du formulaire permet de modifier les infos. Comment intégrer dans l'action "onSubmit" une fonction d'activation des champs ?.
Voilà, je ne suis pas du tout experte en language côté client. est-ce que qqu'un pourrait m'indiquer où trouver ce type de scripts ? J'ai fait une recherche sur GOOO mais je ne trouve pas.
Merci ! :lol:

Posté : 10 mars 2006, 22:33
par Cyrano
Activer les champs dans un évènement onsubmit ne servira strictement à rien puisque le formulaire sera parti. Il faudrait donc utiliser un autre bouton et un évènement onclick par exemple.

Ensuite, ajoute un attribut id dans le champ que tu veux pouvoir activer : exemple.
<?xml version="1.0" encoding="iso-8859-1" ?>
<!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" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Activer un champ de formulaire</title>
<meta http-equiv="Content-language" content="FR-fr" xml:lang="fr" dir="ltr" />
<script type="text/javascript">
/* <![CDATA[ */
function activer_champ()
{
    document.forms['mon_form'].elements['mon_champ'].disabled = false;
}
/* ]]> */
</script>
</head>
<body>
<form action="#" method="post" id="mon_form">
<input type="text" name="mon_champ" id="mon_champ" value="xyz" disabled="disabled" /><br />
<input type="button" name="activer" id="activer" value="Activer la saisie" onclick="activer_champ();" />
</form>
</body>
</html>

Bonsoir Cyrano

Posté : 10 mars 2006, 23:12
par coxine
Merci pour ta contribution !
J'ai essayé ce que tu m'as indiqué, mais il y a une erreur javascript sur la page. :(
L'action est bien action=#
J'ai fait le test sur le champ 'nom', lorsque je clique, je vois qu'il s'active, mais de suite après se désactive...donc je reviens à l'état initial.
Tu as une ID?
J'ai souhaité désactiver les champs pour éviter que le membre ne fasse des modifs intempestives lorsqu'il va dans son espace.

Posté : 10 mars 2006, 23:59
par Cyrano
fais donc voir le code que tu as utilisé, je ne peux pas deviner... :-k

bonjour

Posté : 15 mars 2006, 15:49
par coxine
j'ai un peu tardé à répondre, mais voici le code de ce formulaire.
Il est donc appelé depuis ma page d'accueil, une fois que l'internaute s'est identifié.
Le passage de variables de session se passe bien.
Donc le formulaire est rempli et les champs désactivés (pour éviter des erreurs).
J'ai recommencé cette page avec l'éditeur Dreamweaver pensant que ça allait me sortir de là...mais non. la voici
<?php echo 'Compte de ' ;
  echo $row_Membres['prenom'];
  echo $row_Membres['nom'];?></span>      
        <form id="form" name="form" method="post" action="#">
          <table width="312" cellpadding="3" cellspacing="0">
            <tr>
              <td width="154" class="Style4"><div align="left">Nom * </div></td>
              <td width="144">
                <input disabled name="nom" type="text" class="form" value="<?php echo $row_Membres['nom']; ?>"  /></td>
            </tr>
            <tr>
              <td class="Style4"><div align="left">Pr&eacute;nom * </div></td>
              <td>
                <input disabled name="prenom" type="text" class="form" value="<?php echo $row_Membres['prenom']; ?>" /></td>
            </tr>
            <tr>
              <td class="Style4"><div align="left">Identifiant * </div></td>
              <td><input disabled name="login" type="text" class="form" value="<?php echo $row_Membres['login']; ?>" /></td>
              <td>
                <input disabled name="login" type="text" class="form" /></td>
            </tr>
            <tr>
              <td class="Style4"><div align="left">Mot de passe * </div></td>
              <td>
                <input disabled name="pass" type="password" class="form" id="pass" value="<?php echo $row_Membres['pass']; ?>" />              </td>
            </tr>
            <tr>
              <td class="Style4"><div align="left">V&eacute;rification * </div></td>
              <td><input disabled name="pass2" type="password" class="form" value="<?php echo $row_Membres['pass2']; ?>" /></td>
            </tr>
            <tr>
              <td class="Style4"><div align="left">Adresse</div></td>
              <td><textarea disabled name="adresse" cols="21" rows="3" class="form" ><?php echo $row_Membres['adresse']; ?></textarea></td>
            </tr>
            <tr>
              <td class="Style4"><div align="left">Code postal</div></td>
              <td><input disabled name="code_postal" type="text" class="form" value="<?php echo $row_Membres['code_postal']; ?>" maxlength="5" /></td>
            </tr>
            <tr>
              <td class="Style4"><div align="left">Ville</div></td>
              <td><input disabled name="ville" type="text" class="form" value="<?php echo $row_Membres['ville']; ?>" /></td>
            </tr>
            <tr>
              <td class="Style4"><div align="left">Email * </div></td>
              <td><input disabled name="email" type="text" class="form" value="<?php echo $row_Membres['email']; ?>" /></td>
            </tr>
            <tr>
              <td class="Style4"><div align="left">T&eacute;l&eacute;phone * </div></td>
              <td><input disabled name="tel" type="text" class="form" value="<?php echo $row_Membres['tel']; ?>" /></td>
            </tr>
            <tr>
              <td class="Style4"><div align="left">Date de naissance </div></td>
              <td><input disabled name="naissance" type="text" class="form" value="<?php echo $row_Membres['naissance']; ?>"></td>
            </tr>
            <tr>
              <td colspan="2">
                <div align="right">
                  <input type="submit" name="Submit" value="Modifier" onclick="activer_champ();" />
                  <input name="ModifMembre" type="hidden" id="ModifMembre" value="1" />
                  <a href="moncompte.php"></a></div></td></tr>
          </table>
          </form>
Et le code javascript que tu m'as indiqué:

Code : Tout sélectionner

function activer_champ() { document.forms['form'].elements['nom'].disabled = false; }
Merci de ton aide !

Posté : 15 mars 2006, 16:22
par Cyrano
Il manque un attribut id dans le champ de saisie du nom:
<input disabled name="nom" type="text" class="form" value="<?php echo $row_Membres['nom']; ?>
Ajoute : id="nom"
Faute de quoi, la fonction ne marchera pas :
la formulation document.forms['form'].elements['nom'] fait référence à l'arborescence DOM de ta page et donc nécessite l'utilisation d'identifiant : l'attribut name ne peut pas remplacer ou alors il faudrait écrire document.forms['form'].nom mais c'est moins heureux et avec le standard XHTML, il faut préférer les id.

merci !

Posté : 15 mars 2006, 20:23
par coxine
nickel !
J'ai une autre question :oops:
Pour mon formulaire d'identification, j'ai donc deux champs, login et mot de passe et en dessous, un lien "me connecter"
comment faire (pour des raisons d'accessibilité) pour que le formulaire soit validé par la touche entrée et non par le clic ?
Je te remets le code du formulaire :

Code : Tout sélectionner

<form action="includes/valid.php" method="post" name="form" id="form" onSubmit="showsubmit(this)"> <input type="hidden" name="redir" value="index.php"> <div class="hidden" id="login"> <table width="100%" border="0" cellpadding="2" cellspacing="0"> <tr> <td width="116" height="19" valign="top" class="Style4"><div align="right">Login</div></td> <td width="77" valign="top"><input name="login" type="text" class="form" id="login" size="15"></td> </tr> <tr> <td height="19" valign="top" class="Style4"><div align="right">Mot de<br/> passe</div> </td> <td valign="top"><input name="pass2" type="password" class="form" id="pass2" value="" size="15"></td> </tr> <tr> <td height="13" colspan="2" valign="top"><div align="right"><a href="#" onClick="javascript:showsubmit(document.form);">Me connecter</a> </div></td> </tr> </table></div></form>
tu as une ID ?
Merci de ton aide !

Posté : 15 mars 2006, 20:56
par Cyrano
Rajoute un bouton submit et au besoin masque le avec un style CSS :
        <input type="submit" name="envoi" id="envoi" style="visibility: hidden" value="Valider">