2009-09-09 7 views
1

Je me demandais s'il y avait une fonction que je pourrais ajouter à cela, qui montrerait les données de nouveau, comme le faire glisser vers le bas ou quelque chose après un certain temps pour que vous puissiez aller retournez et ressaisissez vos données.Basic jQuery slideUp/slideDown aide

Actuellement, il glisse juste après soumettre, puis affiche le texte.

$("#help").slideUp(function() { 
$("#help").before('<div class="failMessage">SOME FAIL TEXT HERE</div>'); 
setTimeout(ShowControlsHideFailMessage,5000); 
}); 

    function ShowControlsHideFailMessage() 
    { 
     $("#help").slideDown(); 
     $('.failMessage').addClass('hidden'); 
    } 
+3

Juste pour confirmer, vous voulez que votre formulaire à slideUp (que vous avez fait) et au bout de 5 secondes slideDown? – Colin

+1

Oui. C'est exactement ce que je veux. Y a-t-il un moyen de faire en sorte que le texte soit caché après qu'il se soit également rétracté? – Homework

+0

@Joey: J'ai fait le changement nécessaire pour réparer le slideDown et masquer le message. ma réponse ci-dessous explique le changement. – RSolberg

Répondre

3

L'exemple de code ci-dessous utilisera la fonction setTimeout pour appeler $ ("# help"). SlideDown() au bout de 5 secondes. En outre, si vous voulez cacher la « FAIL TEXT », je suggère d'utiliser une classe CSS pour ce message comme celui-ci:

$("#help").slideUp(function() { 
    $("#help").before('<div class="failMessage">SOME FAIL TEXT HERE</div>'); 
    setTimeout(ShowControlsHideFailMessage, 5000); 
}); 

function ShowControlsHideFailMessage() 
{ 
    $("#help").slideDown(); 
    $('.failMessage').addClass('hidden'); 
} 

Vous pouvez utiliser la failMessage de classe pour les polices rouges ou quelque chose de spécial à ce message et puis créez une classe masquée qui définit l'affichage sur none.

+0

Pour une raison quelconque, cela n'a pas d'effet sur le temps. Il fait un slideUp, puis redescend immédiatement, mais après il glisse vers le bas, le texte est encore au-dessus. – Homework

+0

Enlever la parenthèse de la fonction setTimeout comme mise à jour ci-dessus ... devrait lire setTimeout (ShowControlsHideFailMessage, 5000); – RSolberg

+1

J'ai mis à jour la question avec le code complet que j'utilise si cela aide, je pense que je me trompe tellement! – Homework

1

Voici une meilleure façon:

var failMessage = $('<div class="failMessage" />'); 
failMessage.text('SOME FAIL TEXT HERE'); 
//Create the failMessage beforehand 

$("#help") 
    .slideUp(function() { 
     $(this).before(failMessage); 
    }) 
    .delay(5000) 
    .slideDown(function() { 
     failMessage.hide(); 
    }​);​