J'utilise une fonction pour afficher un div:Javascript onkeyup trop "lent"? .hide() fonctionne uniquement avec onkeydown
function showCMD() {
$("#cmd").show("fast");
$('#cmdText').focus();
}
Cela se produit, si l'utilisateur est en train de taper sur son clavier « cmd ».
Code principal:
document.onkeyup = function(event) {
//Save the last three keys
one = two;
two = three;
three = event.keyCode;
if (one == 67 && two == 77 && three == 68 && cmdOpen == false) {
showCMD();
}
//if the pressed key is ENTER and the textarea is focused
if (event.keyCode == 13 && $("#cmdText").is(":focus") == true) {
//passing the code to another function
execCMD(document.getElementById("cmdText").value);
//empty the textarea - works great
document.getElementById("cmdText").value = "";
return false;
}
}
Le code tapé par l'utilisateur sera traité ici:
function execCMD(command) {
if(command == "exit") $("#cmd").hide("fast");
console.log(command);
}
console
me donne chaque sortie de temps. Mais il ne cache pas le div # cmd. Si je change onkeyup à onkeydown, cela fonctionne très bien. Le problème avec onkeydown est que la zone de texte affiche le "d", après avoir ouvert la ligne de commande avec la séquence de touches "cmd". Donc, soit je ne peux pas fermer le # cmd ou il affiche un "d" chaque fois que j'ouvre le # cmd.
Last but not least le code html:
<div id="cmd">
<textarea id="cmdText" maxlength="80"></textarea>
</div>
Peut-être que vous saurez une solution pour mon problème! Merci beaucoup
Vous devez aussi être prudent avec l'utilisation de '==' et en '===' pour éviter la conversion de type. Voir cet article: http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons –