Modifier un champ de formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Modifier un champ de formulaire

Re: Modifier un champ de formulaire

par ladinho58 » 11 janv. 2012, 12:32

J'ai "un peu" avancé dans mes recherches

Voici maintenant ma fonction f() :

Code : Tout sélectionner

<script language="JavaScript"> <!-- function f() { //$toto=document.getElementById("in_moyenne_pte"); //alert('toto'); var pte=document.getElementById("in_moyenne_pte").value; var hph=document.getElementById("in_moyenne_hph").value; var hch=document.getElementById("in_moyenne_hch").value; var hpe=document.getElementById("in_moyenne_hpe").value; var hce=document.getElementById("in_moyenne_hce").value; //alert(pte); //alert(hph.value) //alert(hch.value) //alert(hpe.value) //alert(hce.value) //alert(parseFloat(pte.value)) //if (pte > hph && pte < hch) alert(pte); alert(hph); <?phpif (pte>hph && pte<hch) ?> hph = pte; alert(hph); } --> </script>
Avant de cliquer sur le bouton qui lance le JavaScript, j'ai ces valeurs la :
pte=1000
hph=81
hch=1500

Et j'obtiens successivement en alert : 1000 / 81 / 1000
Ce qui signifie que l'on passe bien dans la boucle if (c'est en ça que je dis que j'ai un peu avancé :) )
Mais en revanche, la valeur de hph a bien été modifiée par sa valeur, mais elle n'est pas modifiée sur l'affichage.

Re: Modifier un champ de formulaire

par ladinho58 » 11 janv. 2012, 11:20

Oui j'ai copié le formulaire. Il fonctionne très bien !
Le formulaire est contenu dans un tableau.
A la fin du tableau, je crée un bouton "modifier les champs", qui lorsqu'on clique dessus, est censé faire appel à la fonction javascript.

Je te remet le code de façon un peu plus ordonnée :
echo "<fieldset><legend>Valeurs préconisées</legend><form name='changerform' method=post action='rapport/edit_rapport.php'>";

        $unite = "kVA";

echo'
    <table class="center" id="resultat" >
        <tr>
        <th width="60"><label for="moyenne_pte">Pte</label></th>
        <th width="60"><label for="moyenne_hph">HPH</label></th>
        <th width="60"><label for="moyenne_hch">HCH</label></th>
        <th width="60"><label for="moyenne_hpe">HPE</label></th>
        <th width="60"><label for="moyenne_hce">HCE</label></th>
         </tr>';

//Affichage des champs pour saisir les moyennes.
    $pte = isset($_SESSION['session_in_moyenne_pte']) ? (int)$_SESSION['session_in_moyenne_pte'] : 0;
    $hph = isset($_SESSION['session_in_moyenne_hph']) ? (int)$_SESSION['session_in_moyenne_hph'] : 0;
    $hch = isset($_SESSION['session_in_moyenne_hch']) ? (int)$_SESSION['session_in_moyenne_hch'] : 0;
    $hpe = isset($_SESSION['session_in_moyenne_hpe']) ? (int)$_SESSION['session_in_moyenne_hpe'] : 0;
    $hce = isset($_SESSION['session_in_moyenne_hce']) ? (int)$_SESSION['session_in_moyenne_hce'] : 0;

echo'
        <tr>
        <td><input type="text" name="in_moyenne_pte" id="in_moyenne_pte" style="text-align: right;" tabindex=170 size=3 value='.(int)$pte .'> '.$unite.'</td>
        <td><input type="text" name="in_moyenne_hph" id="in_moyenne_hph" style="text-align: right;" tabindex=171 size=3 value='. (int)$hph .'> '.$unite.'</td>
        <td><input type="text" name="in_moyenne_hch" id="in_moyenne_hch" style="text-align: right;" tabindex=172 size=3 value='. (int)$hch .'> '.$unite.'</td>
        <td><input type="text" name="in_moyenne_hpe" id="in_moyenne_hpe" style="text-align: right;" tabindex=173 size=3 value='. (int)$hpe .'> '.$unite.'</td>
        <td><input type="text" name="in_moyenne_hce" id="in_moyenne_hce" style="text-align: right;" tabindex=174 size=3 value='. (int)$hce .'> '.$unite.'</td>
        </tr>
   
</table>';

//La je crée le bouton qui va appeler la fonction JavaScript.

echo '<br /><div align=center><input type="button" value="modifier les champs" onClick="f(); return false;"/></div>';


//Et voilà pour le moment à quoi ressemble ma fonction JavaScript.

<script language="JavaScript">
<!--           
function f()
{
    var pte=document.getElementById("in_moyenne_pte");
    var hph=document.getElementById("in_moyenne_hph");
    var hch=document.getElementById("in_moyenne_hch");
    var hpe=document.getElementById("in_moyenne_hpe");
    var hce=document.getElementById("in_moyenne_hce");
   
   
    if (_pte.value > _hph.value && _pte.value < _hch.value)
   {
         _hph.value=_pte.value;
   }

    /*
    for (i=0;i<3;i++)
    if (documents.changerform.element[i].value > documents.changerform.element[i+1].value)
    {
        documents.changerform.element[i+1].value = documents.changerform.element[i].value;
    }   
    */

}
-->   
</script>
Mes appels à la fonction document.getElementById fonctionnent bien, quand je fais un alert(pte) par exemple, ca m'affiche bien le bon résultat. Donc maintenant il faudrait les traiter pour modifier la valeur des autres en fonction des modifications qu'on apporte

Re: Modifier un champ de formulaire

par xTG » 10 janv. 2012, 20:00

C'est un malheureux copier/coller ton code de formulaire ? Car tu mélanges du html avec du PHP.

Pour ton dernier code c'est bizarre. Si nb_element_formulaire est le nombre d'élément alors tu vas de 0 à N-1 éléments.
Sauf qu'en comparant i à i+1 tu vas donc de 0 à N ce qui à mon avis n'est pas voulu et te fais travailler sur un élément qui n'existe pas.

Re: Modifier un champ de formulaire

par ladinho58 » 10 janv. 2012, 18:30

Je pensais changer ma fonction javascript comme ca, est-ce possible ? Parce que cette méthode semble plus rapide que la précédente. (en faisant comme ça, j'obtiens le même résultat qu'avant, c'est-à-dire que le bouton d'activation javascript ne me met aucun message d'erreur et n'agit pas du tout

Code : Tout sélectionner

for ($i=0;i<nb_element_formulaire;i++) if ((int)documents.changerform.element[i].value > (int)documents.changer.element[i+1].value) { (int)documents.changerform.element[i+1].value = (int)documents.changer.element[i].value; }

Modifier un champ de formulaire

par ladinho58 » 10 janv. 2012, 18:02

Bonjour,

je suis débutant en javascript et j'aurais voulu faire un truc vraiment tout bête : on entre une valeur dans un champ de formulaire et en cliquant sur un bouton, en fonction de la valeur qu'on a rentré, ça va modifier la valeur de champ de texte du même formulaire. Il faut que les valeurs du formulaire restent croissantes, c'est tout !

pour le moment j'ai fait que sur une valeur pour voir si ça marchait, mais en cliquant sur le bouton qui est censé activer le javascript, ça me fait rien.

La fonction qui calcule la nouvelle valeur à afficher :

Code : Tout sélectionner

<script language="javascript"> function f() { var _pte=document.getElementById("in_moyenne_pte"); var _hph=document.getElementById("in_moyenne_hph"); var _hpd=document.getElementById("in_moyenne_hpd"); if (_pte.value > _hph.value && _pte.value < _hpd.value) _hph.value=_pte.value; } </script>
mon appel de la fonction dans le formulaire :
<form name='changer' method=post action='rapport/edit_rapport.php'>";

<table class="center" id="resultat" >

echo'
<tr>
<td><input type="text" name="in_moyenne_pte" id="in_moyenne_pte" style="text-align: right;" tabindex=170 size=3 value='.(int)$pte .'> '.$unite.'</td>

<td><input type="text" name="in_moyenne_hph" id="in_moyenne_hph" style="text-align: right;" tabindex=172 size=3 value='. (int)$hph .'> '.$unite.'</td>';

'<td><input type="text" name="in_moyenne_hpd" id="in_moyenne_hpd" style="text-align: right;" tabindex=174 size=3 value=' . (int)$hpd . '> '.$unite.'</td>';

echo '
</tr>
</table>

';
echo '<br /><div align=center><input type="button" onclick=f() value="modifier les champs"></div>';
echo "</form>; 

Je galère par mal avec le JavaScript, c'est la première fois que j'en fais. J'ai bien essayé de regarder tout un tas de site, mais ca donne ca pour le moment.

Merci d'avance pour votre aide