if(characterCode == 13)
{
return false; // returning false will prevent the event from bubbling up.
}
else
{
return true;
}
Ok, alors imaginez que vous avez la zone de texte suivante dans un formulaire:
<input id="scriptBox" type="text" onkeypress="return runScript(event)" />
Afin d'exécuter un script "défini par l'utilisateur" à partir de cette zone de texte lorsque vous appuyez sur la touche Entrée et de ne pas lui soumettre le formulaire, voici un exemple de code. Veuillez noter que cette fonction ne fait aucune vérification d'erreur et ne fonctionnera probablement que dans IE. Pour ce faire, vous avez besoin d'une solution plus robuste, mais vous aurez l'idée générale.
function runScript(e) {
//See notes about 'which' and 'key'
if (e.keyCode == 13) {
var tb = document.getElementById("scriptBox");
eval(tb.value);
return false;
}
}
renvoyer la valeur de la fonction alertera le gestionnaire d'événements de ne plus propulser l'événement, et empêchera l'événement de pression sur les touches d'être traité davantage.
REMARQUE:
Il a été souligné qu'il keyCode
est désormais obsolète . La deuxième meilleure alternative which
a également été déconseillée .
Malheureusement, la norme préférée key
, qui est largement prise en charge par les navigateurs modernes, a un comportement douteux dans IE et Edge . Tout ce qui est plus ancien que IE11 aurait toujours besoin d'un polyfill .
En outre, bien que l'avertissement obsolète soit assez inquiétant keyCode
et which
, leur suppression représenterait un changement radical pour un nombre incalculable de sites Web hérités. Pour cette raison, il est peu probable qu'ils se rendent dans un avenir proche.
eval
le contenu en appuyant sur un bouton n'est pas différent que s'il ouvrait les outils de développement et le faisait. Si quelque chose était enregistré dans la base de données et pouvait être ouvert par un autre utilisateur, ce serait un gros problème, mais c'est un problème complètement indépendant de ce petit extrait.keyCode
est désormais obsolèteUtilisez les deux
event.which
etevent.keyCode
:la source
which
autreskeyCode
. Il est recommandé d'inclure les deux.keydown
événement au lieu dekeyup
oukeypress
Si vous utilisez jQuery:
la source
preventDefault
ne semble pas arrêter la soumission du formulaire, au moins dans Chrome.$('input[type=text]').on('keydown', function(e) { if (e.which == 13) { e.preventDefault(); } });
'keydown'
est correct comme le disent les autres commentateurs. Comme il n'a pas été modifié, je mettrai à jour la réponse. J'ai utilisé cette réponse et j'ai été bloqué pendant un certain temps jusqu'à ce que je revienne et que je regarde les commentaires.event.key === "Entrée"
Plus récent et beaucoup plus propre: utilisation
event.key
. Plus de codes numériques arbitraires!Documents Mozilla
Navigateurs pris en charge
la source
keyCode
est obsolète. C'est plus lisible et maintenable qu'un entier magique dans votre codeDétection de la touche Entrée enfoncée sur tout le document:
http://jsfiddle.net/umerqureshi/dcjsa08n/3/
la source
Remplacez l'
onsubmit
action du formulaire pour être un appel à votre fonction et ajoutez return false après, c'est-à-dire:la source
Une solution React JS
la source
Alors peut-être que la meilleure solution pour couvrir autant de navigateurs que possible et être à l'épreuve du temps serait
la source
si vous voulez le faire en utilisant un script purement java, voici un exemple qui fonctionne parfaitement
Disons que c'est votre fichier html
dans votre fichier popup.js utilisez simplement cette fonction
la source
Le code ci-dessous ajoutera un écouteur pour la
ENTER
clé sur toute la page.Cela peut être très utile dans les écrans avec un seul bouton d'action, par exemple se connecter, s'inscrire, soumettre, etc.
Testé sur tous les navigateurs.
la source
Une solution jQuery.
Je suis venu ici à la recherche d'un moyen de retarder la soumission du formulaire jusqu'à ce que l'événement flou sur la saisie de texte ait été déclenché.
Ce serait bien d'avoir une version plus générale qui a déclenché tous les événements retardés plutôt que de simplement soumettre le formulaire.
la source
Un moyen beaucoup plus simple et efficace de mon point de vue devrait être:
la source
Utiliser TypeScript et éviter les appels multiples sur la fonction
la source
Un peu simple
N'envoyez pas le formulaire en appuyant sur "Entrée":
Exécutez la fonction en appuyant sur "Entrée":
la source
js natif (fetch api)
la source
Ajoutez ce code dans votre page HTML ... cela désactivera ... Entrez le bouton ..
la source
la source
Solution Cross Browser
Certains navigateurs plus anciens implémentaient les événements de keydown d'une manière non standard.
which
etkeyCode
sont obsolètes de nos jours, mais cela ne fait pas de mal de vérifier ces événements pour que le code fonctionne pour les utilisateurs qui utilisent toujours des navigateurs plus anciens comme IE.La
isKeyPressed
fonction vérifie si la touche enfoncée a été entrée etevent.preventDefault()
empêche la soumission du formulaire.Exemple de travail minimal
JS
HTML
https://jsfiddle.net/tobiobeck/z13dh5r2/
la source