2009-06-02 9 views
1

J'ai un code comme celui-ci de prendre en charge la fonction de la barre d'espace:L'utilisation d'éviter par défaut de prendre en charge la barre d'espace

$(document).keypress(function (e) { 
     e.preventDefault();        
     if (e.which == 32) { 
      // func 
     } 
    }); 

Malheureusement cela détruit les valeurs par défaut de toutes les clés.

Ce:

$(document).keypress(function (e) { 
     if (e.which == 32) { 
      e.preventDefault(); 
      // func 
     } 
    }); 

est malheureusement inefficace.

Comment est-ce que je peux le faire empêcherDéfaut de seulement la barre d'espace?

Merci.

Répondre

2

Essayez ceci:

//e= e || window.event); you may need this statement to make sure IE doesn't keep the orginal event in motion 
var code; 
if (e.keyCode) { 
code = e.keyCode; 
} else if (e.which) { 
code = e.which; 
} 
if (code == 32) { 
if (e.stopPropagation) { 
e.stopPropagation(); 
e.preventDefault(); 
} 
return false; 
} 
+1

voir aussi http://www.quirksmode.org/js/events_properties.html#key –

+0

voir exemple en mouvement: http://www.tedspence.com/index.php?entry=entry070503-103948 – TStamper

+0

Ne fonctionne pas non plus pour 192 –

0

Pourquoi est-ce inefficace?

Peut-être que vous voulez utiliser une instruction switch() au lieu de if-then-else?

-1

Essayez

$(document).keydown(function(e){
if(e.which==32) e.preventDefault();
});

Je l'utilise pour bloquer touche Echap et fonctionne très bien pour moi.

+0

Ah, la mystérieuse fonction $. Réservé pour le code généré par la machine par la spécification ECMA, mais utilisé par une demi-douzaine de bibliothèques pour différentes fonctions dans chacun. – Quentin

+0

Cela fonctionne pour la barre d'espace, mais ne fonctionne pas pour 192 ', qui dans Firefox ouvre toujours une recherche. –

1

Pour certaines choses, comme l'utilisation de $ peut être déroutant un peu. Donc, je poste ma réponse avec le code javascript. Ajoutez ceci dans n'importe quel fichier pour bloquer la barre d'espace (ou vous pouvez également ajouter d'autres actions).

window.onkeydown = function (event) { 
    if (event.keyCode === 32) { 
     event.preventDefault(); 
    } 
}; 

Le code de clé 32 est la barre d'espace. Pour d'autres keycodes, consultez ce site:

http://www.javascripter.net/faq/keycodes.htm

Bonne chance

+0

Bienvenue dans Stack Overflow! Vous constaterez que cette question a été posée, et a répondu il y a plus de quatre ans, cependant ... – azz

Questions connexes