2011-06-09 2 views
1

Je crée un lecteur de musique qui utilise la barre d'espace pour faire une pause et la lecture audio, est maintenant possible de savoir si quelqu'un est en train de taper dans un champ de texte, parce qu'en ce moment, si ce type d'utilisateur dans un champ de texte et de l'audio joue, lorsque l'utilisateur appuie espacer les pauses audio, je voudrais essentiellement que lorsque l'utilisateur n'est pas dans un champ de texte qu'un utilisateur peut tout simplement jouer et mettre en pause audio, mais lorsque l'utilisateur tape que cette fonction est désactivée donc l'audio continue à jouer. Le code ci-dessous, est le code que je suis en train d'utiliser pour détecter quand l'espace est pressé;js désactivent la barre d'espace lors de la frappe dans textfield

//IF Space bar is Pressed 
$(window).keypress(function(e) { 
if(e.keyCode == 32) { 
    if(document.getElementById('audio').paused){ 
     if(document.getElementById('video').style.display=="block"){ 

     } 
     else{ 
      document.getElementById('audio').play(); 
      document.getElementById('pause').style.display="block"; 
      document.getElementById('play').style.display="none"; 
     } 
    } 
    else{ 
     if(document.getElementById('video').style.display=="block"){ 

     } 
     else{ 
      document.getElementById('audio').pause(); 
      document.getElementById('pause').style.display="none"; 
      document.getElementById('play').style.display="block"; 
     } 
    } 
} 
}); 
//END IF Space bar is pressed 

Répondre

4

Vérifiez les sources d'événements tagName attribut:

function(e) { 
e = e || event; 
var el = e.srcElement || e.target, 
    cando = !(/textarea|input/i.test(el.tagName)); 

if(cando && e.keyCode == 32) { 
    /etc. 
} 
} 
+0

Genius :), je ne comprends pas plus de cela, je vais devoir lire à ce sujet mais merci :) –

1

Vérifiez si un textarea a le focus

if(e.keyCode == 32 && !text_area_has_focus) { ... 

Logic pour cela pourrait être quelque chose comme ça, si vous êtes prêt à utiliser jQuery:

if(e.keyCode == 32 && !$('input[type=text]:focus').length) { ... 
+0

hmmmmmm, thats ne fonctionne pas, thats complètement arrêté audio étant mis en pause ou joué par la barre d'espace, peu importe si la saisie ou non :( –

+0

@Lenny, avez-vous il suffit de copier coller cela? Parce que vous avez réellement à mettre en œuvre la logique pour la mise en text_area_has_focus .... – Matt

+0

hmmmm, yeh qui est le bit que je suis coincé avec je comprends ce que vous avez fait, mais savez-vous comment détecter si un champ de texte a le focus? –

1

Vous pouvez également essayer

if(e.keyCode == 32 && document.activeElement != document.getElementById('someTextBox')) 

Nouveau code

//IF Space bar is Pressed 
$(window).keypress(function(e) { 
if(e.keyCode == 32) { 
    var inputs = document.getElementsByTagName('input'); 

    for(var item in inputs) 
    { 
     if(inputs[item] == document.activeElement) 
      return; 
    } 

    if(document.getElementById('audio').paused){ 
     if(document.getElementById('video').style.display=="block"){ 

     } 
     else{ 
      document.getElementById('audio').play(); 
      document.getElementById('pause').style.display="block"; 
      document.getElementById('play').style.display="none"; 
     } 
    } 
    else{ 
     if(document.getElementById('video').style.display=="block"){ 

     } 
     else{ 
      document.getElementById('audio').pause(); 
      document.getElementById('pause').style.display="none"; 
      document.getElementById('play').style.display="block"; 
     } 
    } 
} 
}); 
//END IF Space bar is pressed 
+0

qui fonctionne, mais '&& document.activeElement! = Document.getElementByTagName ('input')' est pas ... pourquoi? –

+1

a apporté des modifications appropriées – Lourens

+0

de Grâce, cela fonctionne aussi, mais KooiInc était plus rapide :(, mais votre réponse est correcte aussi bien :) –

Questions connexes