Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Les forms avec input submit avec names

2 views
Skip to first unread message

Salagir

unread,
Jun 10, 2003, 11:24:57 AM6/10/03
to
Je déteste IE, je déteste IE, je déteste IE, je déteste IE...


Voici un superbe script qui (bien sur) marche très bien avec Mozilla:

<form name="md" >
<input name="txtmd" value="<?= $txtmd ?>">
<input type="submit" name="bob" value="Submit 1">
<input type="submit" name="bob" value="Submit 2">
<input type="image" name="bob" value="Submit 3" src="ban.gif">
<button type="submit" name="bob" value="Submit 4">
<img src="ban.gif"> Button (submit 4)</button>
</form>
<?php echo $bob; ?>

Le 1er input est là pour que le form ait qqch à envoyer.
Dans un monde w3cment parfait, si on envoie le formulaire avec le 1er
submit bouton, $bob="Submit 1", avec le 2nd bouton, $bob="Submit 2",
avec l'image, $bob="Submit 3", avec le <button> qui contient du texte et
de l'image, $bob="Submit 4"

Dans IE....
Quelque soit le button utilisé, IE envoie un $bob égal au *contenu* du
<button> (et non sa value). Si vous clickez sur un input submit, il
envoie en plus un $bob avec la valeur du input. Dans le cas de l'image,
il n'envoie pas sa valeur. Juste (comme mozilla) les coordonnées du
click en x et y.

exemple:
http://salagir.com/~salagir/tests/tests.php
(le formulaire du bas)

Conclusion: avec IE, il n'y a pas moyen d'envoyer une variable
différente dépendante de sur quel bouton on clique ? Sauf en donnant la
valeur voulue comme celle qu'on affiche sur le bouton (-_-), et se
débarrasser de tous les <button> bien sur (re -_-)

--
++++++++ Zelda, Dragon Ball, Mana and my (art)work at www.salagir.com ++++++++
JS: par curiosité, quel matériel il faut avoir pour créer son propre FAI ?
J : Pour créer un FAI comme Havas Off Line, une machine à café suffit,
pour l'assistance technique.
-+- in: Guide du Cabaliste Usenet - Bien configurer sa Hot-Line -+-

ho alexandre

unread,
Jul 2, 2003, 8:48:33 AM7/2/03
to
Salagir wrote:
> Conclusion: avec IE, il n'y a pas moyen d'envoyer une variable
> différente dépendante de sur quel bouton on clique ? Sauf en donnant la
> valeur voulue comme celle qu'on affiche sur le bouton (-_-), et se
> débarrasser de tous les <button> bien sur (re -_-)

en javascript tu peux ?
tu mets un onClick() sur tous les boutons, qui active une fonction qui
remplit un INPUT hidden.

en DOM c bien parce que ça marche à la fois dans MSIE6 et dans Netscape
6/7, parcontre ça ne marchera ni dans lynx ni dans NN4.


--
Xandrex
PS : ton nom me dit furieusement quelque chose ?

Salagir

unread,
Jul 2, 2003, 11:51:46 AM7/2/03
to
On Wed, 02 Jul 2003 14:48:33 +0200, in fr.comp.infosystemes.www.auteurs,
ho alexandre wrote:
> Salagir wrote:
>> Conclusion: avec IE, il n'y a pas moyen d'envoyer une variable
>> différente dépendante de sur quel bouton on clique ? Sauf en donnant la
>> valeur voulue comme celle qu'on affiche sur le bouton (-_-), et se
>> débarrasser de tous les <button> bien sur (re -_-)
> en javascript tu peux ?
> tu mets un onClick() sur tous les boutons, qui active une fonction qui
> remplit un INPUT hidden.

C'est exactement ce que j'ai fais.

Mais j'aime pas. Du coup j'ai fais une fonction qui détecte le
navigateur, et seulement pour IE, il utilise la 2eme solution. Ainsi les
navigateurs (et gens) qui n'utilisent pas le javascript ne sont pas
laissés pour compte.

Pour ceux que ca interesse, la fonction que j'ai utilisé (en php):
(note: la classe utilisée Browser() viens du framework Horde)
(note deux: j'ai une varaible globale qui s'appelle $NomDuFormEnCours
et qui contient le nom du ... enfin bref :)

/** écris un bouton d'envoie de formulaire, différent pour IE qui sait
pas gérer les formulaires
\param $content string texte (html accepté) affiché dans le bouton
\param $value string valeur donnée à la variable $action qd le form
est envoyé par ce bouton sur le form
\return code html
*/
function makeSubmit($content, $value='') {
static $JS_un_jour_JS_tjrs=0;
$html='';
$bb = new Browser();
if ($bb->getBrowser()==='msie') {
global $NomDuFormEnCours;
if (!$JS_un_jour_JS_tjrs++) //ecrire le code JS
$html.= '
<script type="text/javascript">
function submitFormIe(valeur) {
i = document.getElementById(\'hidden_action\');
i.value = valeur;
document.'.$NomDuFormEnCours.'.submit();
}
</script>
<input type="hidden" name="action" value="" id="hidden_action" />
';
$html .= "<button class=\"button\" onclick=\"submitFormIe('$value');\">$content</button>";
return $html;
}
//else
$html .= '<button type="submit" class="button" name="action" value="'.$value.'">'.
$content.'</button>';
return $html;
}


--
++++++++ Zelda, Dragon Ball, Mana and my (art)work at www.salagir.com ++++++++

A la guerre, on décore que ceux qui reviennent, ceux qu'étaient courageux, c'est
ceux qui sont morts ! (Coluche)

0 new messages