Pbm remplacement submit par button [Résolu]

Signaler
Messages postés
36
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
23 mars 2005
-
Messages postés
36
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
23 mars 2005
-
Bonjour,

Afin d'éviter les appuis "accidentels" sur la touche "entrée" dans un formulaire j'ai remplacé tous mes bouttons "submit" par des boutton "button" avec un onClick="form.submit();"

mais depuis ça marche plus, en effet si je fait un print_r($_POST) la variable qui a le nom de mon boutton n'est plus enregistrée ce qui fait que le formulaire se rafraichit bien mais qu'aucune action n'est effectuée...

exemple
avant :

après

Il me semble avoir déjà fait ça et que ça marchait nickel... je pige pas trop si qqun a une idée elle est la bienvenue.

Cdt

13 réponses

Messages postés
208
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2008

tu peux optimiser ton code javascript. Si j'ai bien compris c'est un truc comme ca



<?php

if(isset($_POST['submit']))

{

switch($_POST['submit'])

{

case 'Verso':

print('bouton Verso cliqué');

break;

case 'Recto':

print('bouton Recto cliqué');

break;

}

}

?>



<script language="javascript" type="text/javascript">


function validation(bouton) {

document.getElementById("
submit").value=
bouton.value
;



document.getElementById("
formulaire").submit();



}


</script>

<form id="formulaire" action="POST">









</form>



code non teste



cela dit je ne comprend toujours pas pourquoi tu veux faire ca. on peut
toujours cliquer sur le bouton accidentellement... faudrait confirmer
l'action soit en php soit en javascript avec un confirm()



je crois qu'un input de type button n'est pas transmis par formulaire (c'est pour cette raison que tu ne voyais plus la variable dans $_post) et pour le input de type submit seule le submit cliqué est passe par formulaire



donc je ferais:



<?php

if(isset($_POST['submit']))

{

switch($_POST['submit'])

{

case 'Verso':

print('bouton Verso cliqué');

break;

case 'Recto':

print('bouton Recto cliqué');

break;


}

}

?>



<script language="javascript" type="text/javascript">


function validation() {

if(confirm('Etes vous bien sur?'))

return true;

else

return false;




}


</script>

<form action="POST">





submit" value="Recto" onClick="return validation();">

</form>
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
A priori c'est this.form.submit()



Ceci dit, ca ne va pas empecher la possibilite d'appuyer sur entree.
Messages postés
36
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
23 mars 2005

ben qu and tu fais un formulaire et que tu cliques sur un endroit du formulaire ou il y a pas de input et que tu fais entree ... il execute le premier <input type=submit qu'il trouve donc ça devrai pallier à ce problème. En tout cas je teste ça dans 20 min et je te dis si ça change qqchose.

Merci en attendant
Messages postés
36
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
23 mars 2005

bon toujours pas :'( la variable du boutton n'est toujours pas initialisée.. d'ailleur elle ne sort meme pas à vide dans mon print_r($_POST);

help me
Messages postés
23
Date d'inscription
jeudi 9 novembre 2000
Statut
Membre
Dernière intervention
22 mars 2005
2
pourquoi tu ne fais pas un truc du genre:



<script language="javascript" type="text/javascript">

function validation() {

document.form.submit();

}

</script>





ou alors j'ai pas compris le pb!!!




<hr style="width: 100%; height: 2px;">

Si tu trouves qu'une réponse correspond à ta question accèpte-la,

ça peut aider d'autres personnes
Messages postés
23
Date d'inscription
jeudi 9 novembre 2000
Statut
Membre
Dernière intervention
22 mars 2005
2
pourquoi tu ne fais pas un truc du genre:



<script language="javascript" type="text/javascript">

function validation() {

document.form.submit();

}

</script>





ou alors j'ai pas compris le pb?




<hr style="width: 100%; height: 2px;">

Si tu trouves qu'une réponse correspond à ta question accèpte-la,

ça peut aider d'autres personnes
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
y a quoi dans l'action de ton formulaire ?
Messages postés
208
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2008

return true; else return false;
">



sinon le button ne sera pas envoye au serveur pour contourne le prob





<script language="javascript" type="text/javascript">

function validation() {

document.form.submit();

}

</script>
Messages postés
208
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2008

juste que je prefere le dom:


function validation() {

document.getElementById("monform").submit();

}
Messages postés
36
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
23 mars 2005

oui tu as raison tardigrade il faut déclarer un hidden du meme nom que le boutton pour que ça marche, par contre je suis pas sur que si on a plusieurs boutton avec des noms différents ça fonctionne...
Messages postés
36
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
23 mars 2005

Explication de pourquoi je fais ça :o)

imagine un truc du style :

<form....>

</form>

Si un utilisateur tapes un texte dans le input type="text" et fait "Entrée", ça envoi le formulaire ;'( et crois moi ça arrive souvent.

Par contre ta dernière idée à l'air pas mal du tout, faut que je trouve le courage de tester ça :o)

J'accepte ta réponse car elle me semble vraiment pas mal.

Merci à toi
Messages postés
208
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2008

ne saurait il pas possible de gerer ca avec onkeydown onkeypress ou onkeyup afin d'inactiver le code asccii 13?
Messages postés
36
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
23 mars 2005

si aussi bien sur.