IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Plugin BlockUI et confirm (sur onsubmit)


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 10
    Par défaut Plugin BlockUI et confirm (sur onsubmit)
    Bonjour à tous,

    Je m'interesse depuis très peu de temps à l'utilisation de JQuery (je suis donc totalement novice à ce sujet, et très peu expérimenté en JS), et je rencontre actuellement un problème avec l'utilisation du plugin BlockUI (disponible ici).

    • Le contexte:

    Lorsqu'un formulaire est posté sur mon site, je souhaite que le plugin BlockUI s'active, "verrouille" mon UI avec un msg d'attente le temps de l'exécution du POST, puis redonne la main à l'utilisateur.

    • Le problème:

    Dans l'un de mes formulaire, j'utilise une fonction confirm sur l'évènement Onsubmit.
    Lorsque mon formulaire est posté, la pile des évènements est alimentée dans cet ordre:
    • Confirm affiche la DialogBox demandant la validation utilisateur
    • BlockUI "verrouille" l'interface


    Si l'utilisateur clique sur OK, tout se passe bien. S'il clique sur Annuler, l'écran reste verrouillé définitivement.

    Je crois comprendre que le fait de cliquer sur le bouton Annuler n'entraine pas le déclenchement de l'évènement AjaxStop. Il me faudrait donc "capturer" dans ma fonction javascript l'annulation de la fonction submit...

    • Le code:

    Dans ma page principale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <script type="text/javascript"> 
     
        // unblock when ajax activity stops 
        $(document).ajaxStop($.unblockUI); 
     
        $(document).ready(function() { 
        	$('#bt_logout').click(function() {
    			$.blockUI(); 
    		});
     
        	$('form').submit(function() {
    			$.blockUI(); 
    		});
        }); 
     
    </script>
    Dans mon formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="frm_man_part" id="frm_man_part" method="post" action="" onsubmit="return confirm('Confirmer votre participation pour cet article ?');">{...}</form>
    Toute aide gentiment et clairement expliquée sera la bienvenue

    Merci d'avance,

    Asaiel

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Je vous suggère de tester le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $('form').submit(function(){
    	var boolSubmit = confirm('Confirmer votre participation pour cet article ?');
     
    	if (boolSubmit){
    		$.blockUI();
    	}
     
    	return boolSubmit; // false = pas de soumission
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 10
    Par défaut
    Bonjour, et merci beaucoup pour votre aide.

    C'est tout a fait dans l'idée de ce que je cherche, mais il reste néanmoins un problème:

    Le code suivant s'applique à tous les formulaires du site pouvant être postés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('form').submit(function() {
    	$.blockUI(); 
    });
    Hors, tous ne requiert pas une confirmation, et pour ceux dont c'est le cas, tous ne requiert pas le même message...

    Idéalement, il faudrait pouvoir passer en paramètre le message à afficher (avec un test sur la valeur), mais ma fonction submit() n'est jamais explicitement appelée dans mes formulaires...

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Pour les formulaires, on doit pouvoir leur donner une classe spécifique et ensuite traiter chaque classe de formulaire séparément. Ce n'est pas génial, mais je n'ai pas d'autres idées.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 10
    Par défaut
    C'est une solution possible en effet.

    De mon coté, en cherchant un peu (pas mal en fait ), j'ai réussi à écrire un script qui devrait fonctionner, et sur lequel j'aimerais avoir votre avis:

    Page principale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <script type="text/javascript">
     
    	var boolSubmit=true;
     
    	function confirm_form(txt_confirm){
    		boolSubmit = confirm(txt_confirm);
     
    	        return boolSubmit; // false = pas de soumission
            }
     
        // unblock when ajax activity stops 
        $(document).ajaxStop($.unblockUI); 
     
        $(document).ready(function() { 
        	$('#bt_logout').click(function() {
    			$.blockUI(); 
    		});
     
        	$('form').submit(function() {
    			if(!boolSubmit){
    				$.unblockUI();
    			}
    			else{
    				$.blockUI();
    			}
    		});
        });
     
    </script>
    Formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="frm_man_part" id="frm_man_part" method="post" action="" onsubmit="return confirm_form('Confirmer votre participation pour cet article ?');">{...}</form>

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    /*
     * c'est la méthode submit qui doit
     * retourner true (par défaut) ou false
     */ 
    $('form').submit(function() {
    	if(!boolSubmit){
    		$.unblockUI();
    	}
    	else{
    		$.blockUI();
    	}
     
    	return boolSubmit;
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [plugin][XML] Diagrammes omondo sur un autre PC
    Par spoutyoyo dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 12/09/2005, 09h47
  2. [Jboss][EJB]Demande de confirmation sur la structure.
    Par swirtel dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 17/02/2005, 12h30
  3. confirmation sur un lien
    Par AlphonseBrown dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/01/2005, 18h49
  4. Réponses: 6
    Dernier message: 09/07/2004, 15h07
  5. Réponses: 5
    Dernier message: 20/11/2003, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo