Je voudrais savoir quelle touche de caractère est pressée d'une manière compatible avec tous les navigateurs en Javascript pur.
event.key
vous donnera directement le caractère pressé
Je voudrais savoir quelle touche de caractère est pressée d'une manière compatible avec tous les navigateurs en Javascript pur.
event.key
vous donnera directement le caractère pressé
Réponses:
JavaScript "Effacer":
<script type="text/javascript">
function myKeyPress(e){
var keynum;
if(window.event) { // IE
keynum = e.keyCode;
} else if(e.which){ // Netscape/Firefox/Opera
keynum = e.which;
}
alert(String.fromCharCode(keynum));
}
</script>
<form>
<input type="text" onkeypress="return myKeyPress(event)" />
</form>
JQuery:
$(document).keypress(function(event){
alert(String.fromCharCode(event.which));
});
keypress
événement, qui vous donne un code de caractère, plutôt que keyup
ou keydown
qui vous donne un code clé.
e.key
ne prend toujours pas en charge le navigateur complet.
Il y a un million de doublons de cette question ici, mais ici encore une fois:
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.keyCode || evt.which;
var charStr = String.fromCharCode(charCode);
alert(charStr);
};
La meilleure référence sur les événements clés que j'ai vus est http://unixpapa.com/js/key.html .
Plus récent et beaucoup plus propre: utilisation event.key
. Fini les codes numériques arbitraires!
REMARQUE: les anciennes propriétés (
.keyCode
et.which
) sont obsolètes.
node.addEventListener('keydown', function(event) {
const key = event.key; // "a", "1", "Shift", etc.
});
Si vous voulez vous assurer que seuls des caractères uniques sont saisis, vérifiez key.length === 1
ou qu'il s'agit de l'un des caractères attendus.
Essayer:
<table>
<tr><td>Key:</td><td id="key"></td></tr>
<tr><td>Key Code:</td><td id="keyCode"></td></tr>
<tr><td>Event Code:</td><td id="eventCode"></td></tr>
</table>
<script type="text/javascript">
window.addEventListener("keydown", function (e) {
//tested in IE/Chrome/Firefox
document.getElementById("key").innerHTML = e.key;
document.getElementById("keyCode").innerHTML = e.keyCode;
document.getElementById("eventCode").innerHTML = e.code;
})
</script>
* Remarque: cela fonctionne dans "Exécuter l'extrait de code"
Ce site Web fait la même chose que mon code ci-dessus: Keycode.info
**check this out**
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(document).keypress(function(e)
{
var keynum;
if(window.event)
{ // IE
keynum = e.keyCode;
}
else if(e.which)
{
// Netscape/Firefox/Opera
keynum = e.which;
}
alert(String.fromCharCode(keynum));
var unicode=e.keyCode? e.keyCode : e.charCode;
alert(unicode);
});
});
</script>
</head>
<body>
<input type="text"></input>
</body>
</html>
L'une de mes bibliothèques préférées pour faire cela de manière sophistiquée est Mousetrap .
Il est livré avec une variété de plugins, dont l'un est le record
plugin qui peut identifier une séquence de touches enfoncées.
Exemple:
<script>
function recordSequence() {
Mousetrap.record(function(sequence) {
// sequence is an array like ['ctrl+k', 'c']
alert('You pressed: ' + sequence.join(' '));
});
}
</script>
<button onclick="recordSequence()">Record</button>