Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur Javascript avec JQuery

Too much recursion : ok... but why ?

Sujet résolu
    4 novembre 2010 à 12:04:38

    Bonjour a tous !

    J'ai un petit soucis avec un script javascript de verification de formulaire.

    En effet, je veux faire un select, et lors de l'appui sur le submit, je check si une option a bien été sélectionné.

    Si oui : je balance sur la bonne page.
    Sinon : je ne recharge pas la page et je met un beau cadre rouge sur mon select.

    Si l'utilisateur ne selectionne rien ça marche, mais dans le cas ou il met quelque chose j'ai le droit a une belle erreur : Too much recursion.

    Voila mon code :

    HTML généré :

    <form method="POST" action="/brand/index/treat" id="myform">
       <select size="5" class="is_require" name="brand">\
          <option value="46">1ere option</option>
                                 [...]
       </select>
       <button class="button research-button" title="Recherche" type="submit"></button>
    
    </form>
    


    Javascript :

    jQuery.fn.verifyForm = function() {
        var error = false;
        jQuery(".is_require").each(function(){
            if (this.value == '') {
                jQuery(this).css("border", "1px solid red");
                jQuery("#error_box").empty().append("Champ(s) obligatoire(s)");
                error = true;
            }
            else
            if (jQuery(this).css("border") == "1px solid red") {
                jQuery(this).css("border", "")
    					
            }
        });
        return error;
    };
    
    jQuery(function() {
        jQuery('#myform').submit(function() {
            var error = jQuery("#myform").verifyForm();
            if(!error) {
                jQuery('#myform').submit();
                return true;
            }
            return (false);
        })
    		
    });
    


    Le debugger de Internet Explorer me dit que l'erreur c'est toute la boucle du each, le truc c'est que dans ma page il n'y a qu'un element portant la class "is_require" donc en toute logique, il ne devrait passer qu'une fois dans le each sauf qu'apparement... ça boucle sévère et je ne comprend pas pourquoi =(

    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      4 novembre 2010 à 12:26:56

      Une récursion c'est lorsqu'une fonction s'appelle elle même, à partir de là tu ne vas pas avoir du mal à trouver seul l'origine du problème.
      • Partager sur Facebook
      • Partager sur Twitter
        4 novembre 2010 à 12:29:18

        Je pense que quand tu appelles submit() ligne 22, tu repasses par l'événement submit() déclaré ligne 19...

        Donc tu vérifies en boucle.

        Mais tu n'as pas besoin d'appeler explicitement la méthode submit() puisque la valeur de retour de ton écouteur d'événement détermine l'envoi ou non...

        jQuery(function() {
            jQuery('#myform').submit(function() {
                var error = jQuery("#myform").verifyForm();
                return !error;
            });
        });
        

        • Partager sur Facebook
        • Partager sur Twitter
          4 novembre 2010 à 12:37:22

          Oh bien vu, j'avais pas du tout chercher de ce coté, j'étais fixé sur le each et n'ai pas réellement regarder la fonction qui récupérait l'évènement.

          Merci beaucoup.
          • Partager sur Facebook
          • Partager sur Twitter

          Erreur Javascript avec JQuery

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown