Envoyer la valeur du submit lors de la validation d'un formulaire

Envoyer la valeur du submit lors de la validation d'un formulaire - HTML/CSS - Programmation

Marsh Posté le 29-09-2004 à 09:32:51    

J'explique :
je voudrais qu'on puisse valider mon formulaire en cliquant sur un suubmit engendrant ceci :
lors de la validation, un paramètre HTTP est envoyé. Son nom est la valeur de l'attribut "name" du "button" ayant submité (type="submit" ), et sa valeur est la valeur de l'attribut ... "valeur".
Petit exemple, si ça peut aider certain à comprendre :


<button type="submit" name="MonNom" id="MonNom" value="MaValeur">
   <p>Schtroumph !</p>
</button>


Sous firefox, c'est parfait. A la validation du formulaire, je reçois bien un paramètre "MonNom=MaValeur".
Sous IE, gross merde, à la validation du formulaire, je reçois cette merde : "MonNom=<p>Schtroumph !</p>" (qui est la partie affichée du bouton). Une combine pour contourner cette saleté de verrue ?


Message édité par El_gringo le 29-09-2004 à 09:39:07
Reply

Marsh Posté le 29-09-2004 à 09:32:51   

Reply

Marsh Posté le 29-09-2004 à 09:40:01    

button? :heink:

Code :
  1. <form .....>
  2. <input type="submit" name="myName" value="myValue" />
  3. </form>


 

Reply

Marsh Posté le 29-09-2004 à 09:44:33    

chacal_one333 a écrit :

button? :heink:

Code :
  1. <form .....>
  2. <input type="submit" name="myName" value="myValue" />
  3. </form>




 
Ben, le problème c'est que "myValue" va être affiché entant que libellé de bouton. Alors que justement, j'essaye de faire le distingo entre "libellé du bouton", et "valeur du bouton".
 
EDIT : je pensais qu'utiliser "button" plutôt que "input" me permettrait ça. c'est le cas avec firefox. Pas avec IE apparement !


Message édité par El_gringo le 29-09-2004 à 09:47:48
Reply

Marsh Posté le 29-09-2004 à 15:57:20    

Je me permet un petit up...

Reply

Marsh Posté le 29-09-2004 à 16:10:22    

j'ai peut etre pas bien comprit ton probleme , mais pour passer des paramêtre, des variables ou d'autres choses via un formulaire, il y a le cham type="hidden"

Reply

Marsh Posté le 29-09-2004 à 16:36:14    

lol. Merci, je sais ça !
En effet, tu as pas bien compris : je voudrait que le paramètre envoyé (ainsi que sa valeur) dépendent du bouton activé pour envoyer le formulaire.

Reply

Marsh Posté le 30-09-2004 à 10:55:16    

Au fait, ça à pas l'air d'interresser grand monde, mais je m'en suis sorti, en ajoutant un onclick="this.value='MaValeur'". ça ne gêne pas firefox, et règle le pb avec IE.

Reply

Marsh Posté le 30-09-2004 à 11:22:14    

El_gringo a écrit :

Au fait, ça à pas l'air d'interresser grand monde, mais je m'en suis sorti, en ajoutant un onclick="this.value='MaValeur'". ça ne gêne pas firefox, et règle le pb avec IE.


 
Ouai, ben je trouve que la solution est pire que le mal moi (si mal il y a d'ailleurs...)


---------------
Expert en expertises
Reply

Marsh Posté le 30-09-2004 à 11:32:08    

Quel mal y a t'il a cette solution au juste ?
Evidement qu'il y a un mal : le comportement d'IE est différent de celui de firefox, et IE envois comme valeur les données de présentation du bouton. Si ça c'est pas un mal, je sais pas ce qu'il te faut !

Reply

Marsh Posté le 30-09-2004 à 11:35:42    

El_gringo a écrit :

Quel mal y a t'il a cette solution au juste ?
Evidement qu'il y a un mal : le comportement d'IE est différent de celui de firefox, et IE envois comme valeur les données de présentation du bouton. Si ça c'est pas un mal, je sais pas ce qu'il te faut !


 
On utilise pas de JS pour envoyer des valeurs, c'est une rêgle élémentaire... Evidemment, certains le font, mais il suffit qu'il y ai un binzz avec JS pour que tout soit par terre.
 
Ensuite, un bouton n'est pas prévu pour envoyer une valeur autre que le contenu du bouton justement. Un bouton, c'est un bouton. Si tu veux passer d'autres trucs sans que personne ne le voit, tu utilises un champ hidden, je ne vois vraiment pas ce qui pourrait justifier ton truc...


---------------
Expert en expertises
Reply

Marsh Posté le 30-09-2004 à 11:35:42   

Reply

Marsh Posté le 30-09-2004 à 11:47:12    

Hermes le Messager a écrit :

On utilise pas de JS pour envoyer des valeurs, c'est une rêgle élémentaire... Evidemment, certains le font, mais il suffit qu'il y ai un binzz avec JS pour que tout soit par terre.


 
Bien sur, t'as raison. C'est une fonctionnalité de mon produit (un interpréteur de scripts permettant d'écrire simplement des applications client/serveur HTTP). Je spécifierai que la fonctionnalité n'est possible qu'a condition que le Javascript soit interprété par le navigateur.
 

Hermes le Messager a écrit :


Ensuite, un bouton n'est pas prévu pour envoyer une valeur autre que le contenu du bouton justement. Un bouton, c'est un bouton. Si tu veux passer d'autres trucs sans que personne ne le voit, tu utilises un champ hidden, je ne vois vraiment pas ce qui pourrait justifier ton truc...


 
C'est pourtant simple. Imagine le code suivant :


<button type="submit" name="btn1" id="btn1" value="MaValeur 1">
   <p>tralala la</p>
</button>  
<button type="submit" name="btn2" id="btn2" value="MaValeur 2">
   <p>Schtroumph !</p>
</button>


 
Je veux que soit envoyé la valeur btn1=MaValeur 1 si le formulaire est validé par le bouton "tralala la", et envoyer la valeur btn2=MaValeur 2 si le formulaire est validé par le bouton "Schtroumph !".
tu ferais ça comment avec des champs cachés (et sans javascript) au juste ?
 
EDIT : l'intéret de "button", c'est justement de faire le distingo entre la "valeur" du bouton, et le "libellé" du bouton


Message édité par El_gringo le 30-09-2004 à 12:03:29
Reply

Marsh Posté le 30-09-2004 à 12:03:07    

Ben :  
 
<input type="hidden" name="hidden1" value="MaValeur 1"/>
<input type="hidden" name="hidden2" value="MaValeur 2"/>
 
ensuite :
 
<button type="submit" name="btn1" value="ok" />
 
<button type="submit" name="btn1" value="pas ok" />
 
Quand tu récupères côté serveur tes valeurs, tu testes la valeur des boutons, et :
 
si btn1 == ok alors valeur = hidden1 autrement : valeur = hidden2
 
[:spamafote]


---------------
Expert en expertises
Reply

Marsh Posté le 30-09-2004 à 12:31:29    

Non non, ça c'est pas possible. En fait, comme expliquer. Je ne sais pas à l'avance combien de bouton j'aurais, ni leur libellé, ni leur nom. Tout ça est dynamique (géré par un script qu'écrit un administrateur). Du coup, pour savoir quelle valeur de "button" correspond à quel champ "hidden", dur dur. A la limite, je pourrais nommer les champs "hidden" (balises "name" et "id" ) par la "valeur" du "button" lui correspondant, mais non, car la valeur pourra contenir des caractères spéciaux (et pas un name ou un id).
Je sais pas trop si j'arrive à me faier comprendre.
 
EDIT : le fait est que je n'trouve pas logique avec IE d'être forcé d'utiliser la même valeur pour des traitements côté serveur et pour la présentation à l'utilisateur (attribut "value" de ton boutton).
Comme dans une listbox par exemple, tu vois, on peut fixer une valeur à afficher (entre les balises "option" ) et une valeur à envoyer (attribut "value" ), ça c'est logique. Et firefox fait exactement la même chose avec "button". PAs IE, dommage !


Message édité par El_gringo le 30-09-2004 à 12:34:04
Reply

Marsh Posté le 30-09-2004 à 12:38:35    

El_gringo a écrit :

Non non, ça c'est pas possible. En fait, comme expliquer. Je ne sais pas à l'avance combien de bouton j'aurais, ni leur libellé, ni leur nom. Tout ça est dynamique (géré par un script qu'écrit un administrateur). Du coup, pour savoir quelle valeur de "button" correspond à quel champ "hidden", dur dur. A la limite, je pourrais nommer les champs "hidden" (balises "name" et "id" ) par la "valeur" du "button" lui correspondant, mais non, car la valeur pourra contenir des caractères spéciaux (et pas un name ou un id).
Je sais pas trop si j'arrive à me faier comprendre.
 
EDIT : le fait est que je n'trouve pas logique avec IE d'être forcé d'utiliser la même valeur pour des traitements côté serveur et pour la présentation à l'utilisateur (attribut "value" de ton boutton).
Comme dans une listbox par exemple, tu vois, on peut fixer une valeur à afficher (entre les balises "option" ) et une valeur à envoyer (attribut "value" ), ça c'est logique. Et firefox fait exactement la même chose avec "button". PAs IE, dommage !


 
Pour une fois, IE est plus logique, car un bouton est un déclencheur, il n'a pas vocation à transmettre un contenu autre que son état. [:spamafote]
 
Il est en tous cas, parfaitement possible de faire ce que tu veux ;) Les caractères spéciaux sont aisément contournable avec par exemple base64_encode et decode ;)


---------------
Expert en expertises
Reply

Marsh Posté le 30-09-2004 à 14:11:03    

Hermes le Messager a écrit :

Pour une fois, IE est plus logique, car un bouton est un déclencheur, il n'a pas vocation à transmettre un contenu autre que son état. [:spamafote]


 
Il n'est pas plus logique du tout, puisqu'il envoit quand même une valeur. Quitte à envoyer une valeur, pourquoi envoyer le libellé du bouton, qui contient généralement des balises HTML, etc...
 

Hermes le Messager a écrit :


Il est en tous cas, parfaitement possible de faire ce que tu veux ;) Les caractères spéciaux sont aisément contournable avec par exemple base64_encode et decode ;)


 
Moi pas connaitre. C'est du PHP, c'est ça ?
J'suis en Java, mais j'imagine que tu parles d'encoder et décoder les caractères en "base64". Pourquoi pas, mais ça me parait bien compliqué tout ça, pour le petit truc tout bête que j'voulais faire.


Message édité par El_gringo le 30-09-2004 à 14:12:54
Reply

Marsh Posté le 04-10-2004 à 11:48:47    

El_gringo a écrit :

Non non, ça c'est pas possible. En fait, comme expliquer. Je ne sais pas à l'avance combien de bouton j'aurais, ni leur libellé, ni leur nom.


 
Alors si ton administrateur génère un truc , tu lui demande de générer les <input type'hidden'> correspondant ...
 
c'est pas très compliquer. :p

Reply

Marsh Posté le 04-10-2004 à 13:07:17    

Mais non, c'est pas ça. c'est pas un site web que je fais, c'est un soft, qui utilise l'html, http, tout ça. Bref, c'est un appli web. Mais si j'explique tout, là, ça va être trop compliqué, laisse tomber. Désolé, et merci qd même de t'être interressé à mon pb.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed