2010-12-06 6 views
0

J'ai un dialogue JQuery qui est ouvert quand un bouton est cliqué. La première fois, il devrait faire une publication, mais lorsque la boîte de dialogue se ferme et que je clique sur le bouton d'actualisation du broswer, il envoie à nouveau les données et duplique les données que je viens d'entrer. Dois-je ajouter un retour false quelque part afin qu'il ne soit pas postback lorsque la boîte de dialogue est fermée. Voici le script:Arrêtez la publication après l'utilisation de la boîte de dialogue JQuery?

$(document).ready(function() { 
    $('#showTerms').click(function() { 
     $('#terms').dialog({ 
      closeOnEscape: false, modal: true, width: 650, height: 400, title: 'Create New Group' 
     }); 
     $('#terms').dialog('open'); 
     $("#terms").parent().appendTo($("form:first")); 
    }); 
}); 
+0

Je pense que cela fonctionne comme prévu. La publication se produit, puis vous cliquez sur Actualiser, qui soumet à nouveau le formulaire, tout comme avec n'importe quel autre formulaire. Je ne suis pas sûr de la façon dont vous empêchez un rafraîchissement du navigateur d'effectuer son comportement souhaité. – Josh

+0

J'avais peur de cette réponse. – Xaisoft

Répondre

0

Si je comprends ce que vous essayez de faire, essayer ...

passe avec succès un param événement dans votre fonction de réponse de clic (...click(function(eventParam){...), puis utilisez cet événement param pour annuler le postback par défaut à partir du bouton avec eventParam.preventDefault();.

0

Vous pouvez empêcher une publication par clic sur un bouton, avec un peu de magie JS. Changez le bouton pour ajouter UseSubmitBehavior = "false" et OnClientClick = "return false;" de sorte que l'opération de publication par défaut ne s'exécute pas lorsque vous cliquez dessus.

Ensuite, dans le gestionnaire de boîtes de dialogue, écrivez explicitement la ligne lorsque vous souhaitez effectuer une publication sur un clic de bouton: __doPostBack ('<% = btn.UniqueID%>', ''); qui renvoie sur le serveur représentant le bouton (bien que note, le second param, soit le nom de la commande/arg ajouté ensemble).

HTH.

0

Vous pouvez empêcher cela en utilisant le modèle Post-Redirect-Get. L'idée de base est que vous n'envoyez jamais aux utilisateurs les résultats des requêtes POST, seulement des GETs. De cette façon, les utilisateurs ne soumettent jamais en double, ils peuvent mettre en signet des pages en toute sécurité et l'historique de leur navigateur se comporte de manière prévisible.

Dans votre gestionnaire de code-behind pour cette méthode, redirigez simplement vers la page en cours, en apportant les modifications nécessaires pour indiquer que l'utilisateur a accepté les termes.

Questions connexes