Modification d'une action de formulaire en js. [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 28 février 2006
Statut
Membre
Dernière intervention
12 février 2009
-
Messages postés
5
Date d'inscription
mardi 28 février 2006
Statut
Membre
Dernière intervention
12 février 2009
-
Bonjour.

J'essaie depuis plusieurs heures à modifier l'action de mon formulaire en javascript et je commence à déprimer.
Tout à l'air pourtant bien simple mais ça ne fonctionne pas et je ne comprends pas pourquoi.

Voilà en gros la situation :

J'ai un menu déroulant contenant une liste de nom, suivi d'un module fancy upload (ce qui explique pourquoi je dois me galérer à passer par l'action du formulaire, les autres variables ne passent pas).

Afin de passer la valeur du menu déroulant dans l'action du formulaire, j'ai placé un onChange dans le menu qui appelle une fonction :

<select id="id_dest" name="id_dest" onChange="GetDest();">

Et voici la fonction GetDest :

function GetDest()
{
 var pseudo=document.getElementById('id_dest').value;
 document.getElementById('form-demo').action='bcv-scripts/upload.php?pseudo='+pseudo;
 alert(document.getElementById('form-demo').action);
}

Là où je perds le fil, c'est que l'alert indique la bonne valeur, mais l'action de formulaire ne change pas. Donc si pouviez m'aiguiller ce serait cool merci

6 réponses

Messages postés
5
Date d'inscription
mardi 28 février 2006
Statut
Membre
Dernière intervention
12 février 2009

Donc quelqu'un m'a renseigné sur le pourquoi du comment les différents codes sources :



Bonjour, le code source de la sélection te donne en théorie le code de ta page qui a été modifié en JS (s'il a été modifié). Alors que "Afficher le code source" te donne le code d'origine, non modifié, tel que le serveur te l'a envoyé.


En effet après avoir rajouté un submit dans mon script ci-dessus, il marche bien.

Le problème n'est pas résolu pour moi dans le sens où l'upload ne se fait pas où je veux mais ce n'est plus le sujet.

Merci Bul3 de m'avoir aidé. Tu avais raison dès le début en fait, mais je ne connaissais pas cette subtilité du code source et je me suis focalisé dessus.

Bye
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
bonjour,

>> c'est que l'alert indique la bonne valeur
>> mais l'action de formulaire ne change pas
comme tu affiches l'action du formulaire, c'est que c'est bien modifié !

aucune raisons que cela ne fonctionne pas...
sauf contenu bizarre de pseudo, mauvais traitement dans upload.php...
ou autre

bref, l'erreur doit être ailleurs

Cordialement[mon Site][M'écrire]Bul
Messages postés
5
Date d'inscription
mardi 28 février 2006
Statut
Membre
Dernière intervention
12 février 2009

Merci pour ta réponse rapide.

Je suis d'accord avec toi, il n'y a aucune raison que ça ne fonctionne pas, c'est pour ça que je poste ici dès fois que quelqu'un ait déjà eu ce problème

contenu bizarre de pseudo : impossible puisqu'avant l'affichage dans le menu déroulant, je passe les caractères en minuscule et remplace tous les caractères spéciaux en php.
mauvais traitement dans upload.php : non plus car je vérifie dans le code source avant l'envoi du formulaire et l'action n'a pas changé. l'upload.php n'est donc pas intervenu.

Je continue à chercher snif...
Messages postés
5
Date d'inscription
mardi 28 février 2006
Statut
Membre
Dernière intervention
12 février 2009

J'ai oublié de préciser qu'aucune erreur ne s'affiche dans la console d'erreur de FF.


Alors deuxième chose incomprehensible : lorsque je regarde la source, l'action du formulaire ne change pas. En revanche quand je sélectionne mon formulaire sur mon navigateur et que je fais "afficher le code source de la sélection", l'action du formulaire a bien été modifié...


Je nage complètement là...
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
donc , l'erreur doit être ailleurs

    <form name="frm"
            onsubmit="this.action='javascript:alert(\'ok\');';">
       
    </form>

puisque ça, bien entendu tout simple, ça baigne
mais bon... on ne doit pas avoir assez de billes

>>et remplace tous les caractères spéciaux en php.
??? en php ? on est coté client là ?

>>mauvais traitement dans upload.php : non plus
bah... il ne doit pas être appelé d'après ce que tu dis.

>>avant l'envoi du formulaire et l'action n'a pas changé
or tu nous dis bien afficher dans l'alert !
donc, contradiction !
formulaire bien soumis, et page rechargée par exemple...

[mon Site][M'écrire]Bul
Messages postés
5
Date d'inscription
mardi 28 février 2006
Statut
Membre
Dernière intervention
12 février 2009

Bon j'ai testé sur une page  vierge, sans rien pour faire interférence :

<hr /><head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   <title>Test JS</title>
   <script type="text/javascript">
   <!--
      function GetDest() {
         var pseudo=document.getElementById('id_dest').value;
         document.getElementById('form_pseudo').action='bcv-scripts/upload.php?pseudo='+pseudo;
         alert(document.getElementById('form_pseudo').action);
      }
   //-->
   </script>
</head>

<form id="form_pseudo" name="form_pseudo" method="post" action="upload.php?pseudo=0">
  <select name="id_dest" id="id_dest" onchange="GetDest();">
  <option value="1">Pseudo 01</option>
  <option value="2">Pseudo 02</option>
  <option value="3">Pseudo 03</option>
  </select>
</form>

<hr />
Donc :

- Pas de validation de formulaire.
- Pas de problème au niveau de la valeur du pseudo, ce sont des int.
- Pas de script parasite, l'erreur vient bien du js

> Au changement de donnée dans le menu déroulant, le message d'alerte affiche correctement : upload.php?pseudox
> Sur Firefox, lorsque je fais : Code source de la page, j'ai toujours : <form id"form_pseudo" name="form_pseudo" method="post" action="upload.php?pseudo=0">
> Lorsque je sélectionne mon menu et que je fais Code source de la sélection j'ai bien  : <form id"form_pseudo" name="form_pseudo" method="post" action="upload.php?pseudo=x">