onchange="submit()" à problème...

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 : onchange="submit()" à problème...

par Cyrano » 30 avr. 2005, 13:36

Mais non mais non albat, au contraire, d'abord, c'est un excellent exercice, et ensuite c'est effectivement plus pratique. :)

Re: onchange="submit()" à problème...

par albat » 30 avr. 2005, 13:29

j'essaye de faire fonctionner un rafraichissement automatique
Je me sens coupable... :?

par flitox » 30 avr. 2005, 13:05

Effectivement seul toi pouvait trouver ;)

par Cyrano » 30 avr. 2005, 13:04

Merci pour la réponse flitox, mais la solution était ailleurs.
Mon erreur était dans le code PHP et non dans le code JavaScript.

En effet, je testais si le bouton [OK] avait été cliqué, mais je ne vérifiais pas si un envoi de style $_POST avait été envoyé, donc forcément, on ne rentrait pas dans la boucle de traitement et on revenait à l'original.

Ma correction: j'ai rajouté un champ type="hidden" dans mon formulaire et je le teste au chargement de la page :
if(isset($_POST['ok']) || isset($_POST['nouveau']))
{
// etc...
Et là, tout baigne.

par flitox » 30 avr. 2005, 12:52

Hello Cyrano, j'ai peut-être une piste ;)

A mettre dans le <head>

Code : Tout sélectionner

<script type="text/javascript"> function lien() { i = document.getElementById('choix').liste.selectedIndex; if (i == 0) return; url = document.getElementById('choix').liste.options[i].value; parent.location.href = url; } </script>
Voilà le formulaire qui remplace le thème sur mon mon blog :

Code : Tout sélectionner

<form id="choix" action=""> <p> <select name="liste" onchange="lien()"> <option value="">Changer le thème</option> <option value="change_theme.php?theme=ange_demon">Ange ou démon</option> <option value="change_theme.php?theme=nature">Nature</option> <option value="change_theme.php?theme=neige">Neige</option> <option value="change_theme.php?theme=disco">Disco</option> </select> </p> </form>
A adapter avec ton code ;)

onchange="submit()" à problème...

par Cyrano » 30 avr. 2005, 11:35

J'en appelle aux ténors du JavaScript, j'essaye de faire fonctionner un rafraichissement automatique et le résultat est... comment dire.... minable, voilà le mot :P
Pour quelques détails pour bien cerner le problème. Je me monte un site comportant six feuilles de style différentes. En haut de ma page, j'ai un petit formulaire pour choisir l'un de ces styles ou la version minimaliste sans style du tout.

Ce formulaire fonctionne très bien, en voici la source de base:
<form method="post" id="chgstyle" action="/monsite/index.php">
  <label>Choisissez votre style de page&nbsp;:
  <select name="styles" id="styles" title="Choisissez le style d'affichage des page de ce site selon vos goûts">
    <option value="blanc" >Blanc</option>
    <option value="vert" selected="selected">Vert</option>
    <option value="orange" >Orange</option>

    <option value="rouge" >Rouge</option>
    <option value="bleu" >Bleu</option>
    <option value="noir" >Noir</option>
    <option value="minimum" >Minimum</option>
  </select></label>
  <input type="submit" name="ok" id="ok" value="OK" onmouseover="this.style.color=imprimHoverAvt('vert'); this.style.backgroundColor=imprimHoverArr('vert')" onfocus="this.style.color=imprimHoverAvt('vert'); this.style.backgroundColor=imprimHoverArr('vert')" onmouseout="this.style.color=imprimOutAvt('vert'); this.style.backgroundColor=imprimOutArr('vert')" onblur="this.style.color=imprimOutAvt('vert'); this.style.backgroundColor=imprimOutArr('vert')" title="Validez le choix de style." />
</form>
Pour alléger la tâche de l'internaute, j'ai souhaité le dispenser d'avoir à cliquer sur le bouton [OK].
J'ai essayé en rajoutant dans la balise <select> :
<select name="styles" id="styles" title="Choisissez le style d'affichage des page de ce site selon vos goûts" onchange="submit();">
Rien à faire, fonctionne pas. Je me suis dit, soyons syntaxiquement corrects et mettons la totale:
<select name="styles" id="styles" title="Choisissez le style d'affichage des page de ce site selon vos goûts" onchange="document.forms['chgstyle'].submit();">
Résultat tout aussi édifiant. Si par exemple je suis sur le style par défaut en vert, je change la couleur. Le onchange réagit..... me remet "vert" et basta. il ne prend pas le paramètre choisi mais celui qui était sélectionné avant.

Je nage dans la perplexité... Si quelqun a une idée ou une solution ou une piste où chercher.... merci d'avance :)