2010-04-27 4 views
0

Je m'abonne à l'événement click sur tous les boutons d'envoi sur ma page une fois chargé. Tous les boutons déclenchent l'événement correct lorsque vous cliquez dessus, mais cela ne fonctionne qu'une seule fois. Si vous cliquez sur deux boutons dans une rangée le deuxième bouton soumet le formulaire normalement, par opposition à l'exécution du script. Qu'est-ce que je fais mal?.Cliquez sur l'événement sur les boutons de soumission ne déclenche qu'une seule fois

Remarque: Je charge les données de formulaire à partir de "myurl" en utilisant .load(), puis je me connecte aux événements de clic des boutons de soumission dans l'événement complet.

$(document).ready(function() 
{ 
    //Load user content 
    $("#passcontent").load("myurl", function() 
    { 
     //subscribe to click events for buttons to post the data back 
     $('input[type=submit]').click(function() 
     { 
      return submitClick($(this)); 
     }); 
    }); 
}); 

function submitClick(submitButton) 
{ 
    submitButton.attr("disabled", true); 

    alert(submitButton.closest("form").serialize()); 
    $.post("myurl", 
      submitButton.closest("form").serialize(), 
      function(data) 
      { 
       alert("woop"); 
       $("#passcontent").html(data); 
      }); 

    //Prevent normal form submission process from continuing 
    return false; 
} 

Répondre

1

Je réorganiser votre gestionnaire de clic comme ceci:

$(function() { 
    $("#passcontent").load("myurl"); 

    $('input[type=submit]').live('click', function() { 
    $(this).attr("disabled", true);   
    $.post("myurl", $(this).closest("form").serialize(), function(data) { 
     $("#passcontent").html(data); 
    }); 
    return false; 
    }); 
}); 

L'utilisation .live('click', func) écoutes pour click événements éléments actuels et nouveaux, car ils bouillonner les DOM de la même façon. En procédant comme ci-dessus, vous attachez un gestionnaire à la racine du DOM en écoutant input[type=submit] pour lancer un click, ce qui fonctionne même lorsque vous rechargez le contenu et que le bouton d'envoi est remplacé.

Questions connexes