Salut tout le monde
J'ai fait un formulaire avec deux champs mot de passe.
Je souhaite afficher une alerte si ils ne correspondent pas ou si ils sont trop courts.
Donc, j'intercepte la soumission et lance mes tests.
En cas d'échec, j'affiche une boîte d'erreur jQuery-UI.
Et je voudrais bien qu'au bout de 5 secondes, cette boîte disparaisse.
Voici mon code:
EDIT: Oui, je bossais avec nano donc le bout de la ligne est coupé avec un «$», mais vous inquiètez pas, le code de la boîte est correct et elle s'affiche parfaitement
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 id-form').click(function(event){ var alerte = '<div class="ui-widget"><div class="ui-state-error ui-corner-all" style="padding: 0 .7em;"><p><span class="ui-icon ui-icon-alert" style="float: left; margin-right "$ var form = $(this).parent().attr('action'); var pass1 = $(this).parent().find('input[name="pass1"]').val(); var pass2 = $(this).parent().find('input[name="pass2"]').val(); if(pass1.length < 8){ var currentMsg = alerte.replace('{MSG}', 'Votre mot de passe est trop court'); $(this).parent().prepend(currentMsg); runEffect($(this).parent().find('ui-widget')); event.preventDefault(); } if(pass1 != pass2){ var currentMsg = alerte.replace('{MSG}', 'Vos mots de passe ne coincident pas'); $(this).parent().prepend(currentMsg); event.preventDefault(); } });
Et la fonction «runEffect()»
Et ce code marche… sauf que, logiquement… toutes les alertes disparaissent en même temps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function runEffect(){ setTimeout(function(){ var selectedEffect = 'blind'; var options = {}; $('.ui-widget').hide(selectedEffect, options, 500) }, 5000); }
Prenons un cas concret: vous remplissez les premier champ avec «azerty» et le second avec «uiop» et vous cliquez sur «Valider» toutes les 2 secondes.
À chaque fois que vous cliquez, un message d'erreur apparaît.
Sauf que, comme je l'ai dit, tous les messages d'erreurs disparaissent en même temps.
Et ce que je voudrais bien, c'est que la première alerte disparaîsse au bout de 5 sec, la seconde au bout de 5 sec, la troisième au bout de 5 sec, etc. Or, pour l'instant, toutes les alertes disparaissent en même temps.
Vous voyez comment indiquer à «runEffect()» quel alerte masquer?
Parce que je ne vois pas trop comment introduire des ID dans un système dynamique.
Merci d'avance à tous
Partager