2011-11-27 3 views
0

Pièce simple de jQuery qui ajoute la classe .typing à la balise <html> pendant que l'utilisateur est en train de taper. J'ai essayé plusieurs choses différentes qui n'ont pas fonctionné, je ne sais pas comment faire autrement.Script de frappe jQuery

$('html').keypress(function(){ 
    $(this).addClass('typing'); 

    if (/* No key is pressed again in the next 0.5 seconds */) { 
     $('.typing').removeClass('typing'); 
    } 
}); 
+1

Quelle est la question? – ManseUK

+0

S'il vous plaît préciser ce que vous demandez réellement - est-ce d'implémenter la condition après le si ou est-ce pourquoi ce script ne fonctionne pas pour vous (document.ready choses etc)? – alonisser

+0

la réponse ci-dessous déjà fixe ce –

Répondre

5

Créer une fonction qui exécute certain code au bout de 0,5 secondes, en utilisant setTimeout (en liaison avec clearTimeout, pour éviter les délais d'attente de multiples être actif à la fois).

var timer;     //Local variable to hold time-out reference 
function refreshPress(){ 
    clearTimeout(timer); //Prevent stacked time-outs, only one is allowed 
    timer = setTimeout(function(){ 
     $('.typing').removeClass('typing'); 
    }, 500); //0.5 seconds 
} 

$('html').keypress(function(){ 
    $(this).addClass('typing'); //This line can also be merged with refreshPress 
    refreshPress();    // Call refreshPress 
}); 
+0

merci pour la réponse rapide !! impressionnant travail –

+0

en fait maintenant que je l'essaie, après avoir tapé quelques fois il arrête d'utiliser le retard et juste ajouter immédiatement et le supprime –

+0

@JamesKyle Montrer un violon avec votre code. Avez-vous correctement implémenté le code dans la réponse? –

1

Utilisez setTimeout() et clearTimeout() au lieu de if.