[RESOLU] JQuery auto submit

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 : [RESOLU] JQuery auto submit

Re: [RESOLU] JQuery auto submit

par diday » 07 févr. 2011, 09:54

Je passe le thread en résolu. Merci. :)

Re: JQuery auto submit

par diday » 04 févr. 2011, 16:05

Alors là c'est curieux. Avec change, le changement ne se fait que lorsque je fais quelque chose sur la page (par exemple changer d'onget firefox), sinon il attend et ne fait rien. Oo

Re: JQuery auto submit

par jojolapine » 04 févr. 2011, 15:47

Essaye avec l'évènement change plutôt : http://docs.jquery.com/UI/Autocomplete#event-change

Re: JQuery auto submit

par diday » 04 févr. 2011, 15:41

Super merci!

Du coup ça ne marche pas encore comme il faudrait puisque ça ne prend pas la valeur de la liste d'autocompletion mais celle que j'ai entré (par exemple j'entre 'v', je sélectionne 'v0' et ça me sort '?autoComplete=v'. Je vais regarder plus en détail mais si tu as une idée là comme ça direct ça serait merveilleux. :)

Re: JQuery auto submit

par jojolapine » 04 févr. 2011, 15:26

Alors je parlais effectivement du premier morceaux...
Alors il faudrait donner un id à <form> pour pouvoir l'identifier facilement...
du genre:

Code : Tout sélectionner

<form id="mon_beau_formulaire">
Ensuite dans ton code javascript la fonction lancée lors de l'évènement "select" doit ressembler à ceci:

Code : Tout sélectionner

function(){ alert('Attention soumission du formulaire!'); $('#mon_beau_formulaire').submit(); }
pour la syntaxe de selection de jquery, je t'envois ici : http://api.jquery.com/category/selectors/
pour les évènements de formulaire: http://api.jquery.com/category/events/form-events/

Voilà n'hésite pas si tu as d'autres questions ;)

Re: JQuery auto submit

par diday » 04 févr. 2011, 15:09

Tu parles de ça:

Code : Tout sélectionner

<FORM> <br /> <dt id="autoComplete-label">&#160;</dt> <dd> <input type="text" name="autoComplete" id="autoComplete" value="" size="10" limit="10" /></dd> </FORM>
ou ça:

Code : Tout sélectionner

<script type="text/javascript"> //<![CDATA[ $(document).ready(function() { $("#autoComplete").autocomplete({"select":function() { alert ('submit()'); },"source":["..."]}); }); //]]> </script>
Je voulais répondre à l'autre mais j'attends d'avoir la fonction qui marche histoire d'être sûr. ^^
Vu qu'il est bien référencé ça pourra en effet aider d'autres personnes.

Re: JQuery auto submit

par jojolapine » 04 févr. 2011, 15:05

Ah très bien :)
ça sera tout de même plus propre (tu pourrais même aller répondre au pauvre bonhomme sur l'autre forum ;) )

Alors après pour envoyer ton submit...
Il faut que tu sélectionne l'élément form correspondant afin de lui donner "l'ordre" de se soumettre (de quoi on parle là :shock: )

Donc montre nous la source générée de ton formulaire...

Re: JQuery auto submit

par diday » 04 févr. 2011, 14:57

Bon je suis désolé de revenir sur la première idée du controller mais j'ai trouvé comment éviter les quotes dans le setJQueryParams. :)

Code : Tout sélectionner

->setJQueryParams( array("select" => new Zend_Json_Expr("function() { alert ('select'); }") ) )
Du coup j'ai une alerte qui s'affiche avec marqué "select" dedans. \o/
Ça ne marche pas avec "change" (en premier paramètre bien sûr, dans l'alerte ça reste un texte comme un autre).

Nouvelle question: comment transformer ça en submit ?

---

Comme j'ai dit je découvre la programmation web (je viens du C tout con) et rien que ton astuce de regarder le code de la page me permet de comprendre pas mal de petits trucs de Zend.
J'ai firebug mais je ne sais pas encore l'utiliser.

Re: JQuery auto submit

par jojolapine » 04 févr. 2011, 14:50

Ahem oups... encore un oubli de ma part :-°
L'endroit est bon par contre il faut ajouter ceci:
<script type="text/javascript">
$(document).ready(function(){
    $("autoComplete").autocomplete({
       select: function(event, ui) {
            alert('event select');
            $('autoComplete').submit();
       },
       change: function(event, ui) {
            alert('event change');
            ('autoComplete').submit();
       }
    });
});

</script>
Et j'en profite pour t'encourage à regarder la console d'erreur javascript ou encore mieux : firebug ;)

Re: JQuery auto submit

par diday » 04 févr. 2011, 14:43

C'est là que je bloque, j'avais déjà essayé après ta première réponse mais je ne sais pas où intégrer ce script.

Ici, par exemple:

Code : Tout sélectionner

<script type="text/javascript"> $("autoComplete").autocomplete({ select: function(event, ui) { alert('event select'); $('autoComplete').submit(); }, change: function(event, ui) { alert('event change'); ('autoComplete').submit(); } }); </script> </header> <div> <div class="demo"> <br /> <p style="text-indent:3em"><strong>Rechercher:</strong></p> <FORM> <br /> <dt id="autoComplete-label">&#160;</dt> <dd> <input type="text" name="autoComplete" id="autoComplete" value="" size="10" limit="10" /></dd> </FORM>
Ai-je mis les noms corrects aux bons endroit par exemple? Le nom et l'id du formulaire est autoComplete dans le rendu l'appel au formulaire est : $this->autocompleteElement.

--edit: bien entendu, je n'ai aucune alerte à l'écran.

Re: JQuery auto submit

par jojolapine » 04 févr. 2011, 14:36

Je sais pas trop comment marche Zend mais il faudrait te débrouiller pour en plus de tout ton code actuel rajouter ceci dans la vue (source générée quoi :) )

Code : Tout sélectionner

<script type="text/javascript"> $("#autoComplete").autocomplete({ select: function(event, ui) { alert('event select'); //$('#le_formulaire').submit(); }, change: function(event, ui) { alert('event change'); //$('#le_formulaire').submit(); } }); </script>
Normalement tu devrais avoir une/des alerte(s) à l'écran, on décidera ensuite si tu souhaites garder l'évènement select ou change...

Re: JQuery auto submit

par diday » 04 févr. 2011, 14:33

Cela dit, sa conclusion est intéressante :
(Evidement je pourrai passer le javascript directement à l'intérieur de ma vue, mais je ne trouve pas ça très élégant)
Seulement, ce n'est pas évident pour moi. Je me fiche de l'élégance je veux que ça marche: comment faire ça ? :)

Re: JQuery auto submit

par jojolapine » 04 févr. 2011, 14:31

Visiblement on est pas les seuls à se poser la question : http://www.z-f.fr/forum/viewtopic.php?id=5654

Re: JQuery auto submit

par jojolapine » 04 févr. 2011, 14:28

Alors la source semble mal générée..
La faute au plugin ou à notre appel... aucune idée!

En fait pour que notre alert s'affiche, il faudrait que la source ressemble à ceci:

Code : Tout sélectionner

$("#autoComplete").autocomplete({"change":alert('change')
(Plus de guillemets autour de la valeur de change...)
Peut-être qu'il existe un paramètre pour indiquer de ne pas en mettre dans le module Zend?

Re: JQuery auto submit

par diday » 04 févr. 2011, 14:24

Oui j'avais corrigé la parenthèse mais toujours pas de résultat (pas d'erreur non plus).

Voici la source générée (tronquée de tout ce qui n'est pas pertinent):

Code : Tout sélectionner

<link href="/css/css_1024.css" media="screen" rel="stylesheet" type="text/css" /> <link href="/css/redmond/jquery-ui-1.8.9.custom.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js"></script> <script type="text/javascript"> //<![CDATA[ $(document).ready(function() { $("#autoComplete").autocomplete({"change":"alert('change')","source":["..."]}); });
On a bien le change, alert tout ça à priori mais ça ne fonctionne pas. J'ai beau cliquer sur la sélection je dois quand même submit à la main en tapant entrée.