J'ai le javascript suivant dans ma page qui ne semble pas fonctionner.
$('form').bind("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
Je souhaite désactiver la soumission du formulaire à l'entrée, ou mieux encore, appeler mon formulaire ajax soumettre. L'une ou l'autre solution est acceptable mais le code que j'inclus ci-dessus n'empêche pas la soumission du formulaire.
javascript
jquery
forms
form-submit
Adam Levitt
la source
la source
Réponses:
Si
keyCode
n'est pas attrapé, attrapezwhich
:EDIT: manqué, il vaut mieux utiliser
keyup
au lieu dekeypress
EDIT 2: Comme dans certaines versions plus récentes de Firefox, la soumission du formulaire n'est pas empêchée, il est plus sûr d'ajouter également l'événement Keypress au formulaire. De plus, cela ne fonctionne pas (plus?) En liant simplement l'événement au formulaire "nom" mais uniquement à l'id du formulaire. Par conséquent, j'ai rendu cela plus évident en modifiant correctement l'exemple de code.
EDIT 3: remplacé
bind()
paron()
la source
e.which
, vous n'avez donc pas besoin de testere.keyCode
, mais +1 pour la cause la plus probable de ce problème.return false;
?e.preventDefault();
semble assezkeyCode === 13 && !$(e.target).is('textarea')
Habituellement, le formulaire est soumis Enterlorsque vous vous concentrez sur les éléments d'entrée.
Nous pouvons désactiver la Enterclé (code
13
) sur les éléments d'entrée dans un formulaire:DÉMO: http://jsfiddle.net/bnx96/325/
la source
textareas
dans le même formulaire. Utiliser$("form input")
au lieu de$("form :input")
semble le corriger. DEMO: jsfiddle.net/bnx96/279Encore plus court:
la source
function(e) {e.preventDefault();}
comme valeurs de retour dans les gestionnaires d'événements sont obsolètes: stackoverflow.com/a/20045473/601386Enter
ne concerne que la désactivation de la soumission des formulaires par leSubmit
bouton et non la désactivation .onClick
événement pour valider un formulaire et que vous soumettez toujours à l'aide de jQuery. En d'autres termes, il y a des cas où vous ne souhaitez soumettre que via javascript / jQuery. Bien que vous puissiez toujours utiliser AJAX avec cette solution, il désactive la fonctionnalité de base de lasubmit
méthode.which
docs.la source
Cette solution fonctionne sur tous les formulaires du site Web (également sur les formulaires insérés avec ajax), empêchant uniquement les entrées dans les textes saisis. Placez-le dans une fonction prête pour les documents et oubliez ce problème toute votre vie.
la source
La plupart des réponses ci-dessus empêcheront les utilisateurs d'ajouter de nouvelles lignes dans un champ de zone de texte. Si c'est quelque chose que vous voulez éviter, vous pouvez exclure ce cas particulier en vérifiant quel élément a actuellement le focus:
la source
L'excès d'avoir à capturer et à tester chaque frappe pour la touche ENTRÉE me dérange vraiment, donc ma solution repose sur le comportement du navigateur suivant:
Appuyer sur ENTER déclenchera un événement de clic sur le bouton d'envoi (testé dans IE11, Chrome 38, FF 31) ** (ref: http://mattsnider.com/how-forms-submit-when-pressing-enter/ )
Ma solution consiste donc à supprimer le bouton d'envoi standard (c'est-à-dire
<input type="submit">
) afin que le comportement ci-dessus échoue car il n'y a pas de bouton d'envoi pour cliquer comme par magie lorsque vous appuyez sur ENTRÉE. Au lieu de cela, j'utilise un gestionnaire de clics jQuery sur un bouton normal pour soumettre le formulaire via la.submit()
méthode de jQuery .Démo: http://codepen.io/anon/pen/fxeyv?editors=101
** ce comportement n'est pas applicable si le formulaire n'a qu'un seul champ de saisie et que ce champ est une entrée "texte"; dans ce cas, le formulaire sera soumis sur la touche ENTER même si aucun bouton d'envoi n'est présent dans le balisage HTML (par exemple un champ de recherche). C'est le comportement standard du navigateur depuis les années 90.
la source
si vous voulez simplement désactiver la soumission sur le bouton Entrée et Soumettre aussi, utilisez l'événement onsubmit du formulaire
Vous pouvez remplacer "return false" par un appel à la fonction JS qui fera tout ce qui est nécessaire et soumettra également le formulaire comme dernière étape.
la source
Vous pouvez le faire parfaitement en Javascript pur, simple et sans bibliothèque requise. Voici ma réponse détaillée pour un sujet similaire: Désactiver la touche Entrée pour le formulaire
En bref, voici le code:
la source
e.target.nodeName === 'INPUT' && e.target.type !== 'textarea'
. Avec le code spécifié, il permettra de soumettre des formulaires si une radio ou une case à cocher est ciblée.Je ne sais pas si vous résolvez déjà ce problème, ou si quelqu'un essaie de le résoudre maintenant, mais voici ma solution pour cela!
la source
Le moyen le plus simple est de changer le type de bouton en bouton - en html puis d'ajouter un événement en js ...
Changement par rapport à ceci:
À
Et en js ou jquery ajoutez:
la source
Le code suivant annule l'utilisation de la clé d'entrée pour soumettre un formulaire, mais vous permet tout de même d'utiliser la clé d'entrée dans une zone de texte. Vous pouvez le modifier davantage en fonction de vos besoins.
la source
Dans Firefox, lorsque vous entrez et appuyez sur Entrée, il soumettra son formulaire supérieur. La solution est dans le formulaire de soumission, ajoutez ceci:
la source
3 ans plus tard et pas une seule personne n'a répondu complètement à cette question.
Le demandeur souhaite annuler la soumission du formulaire par défaut et appeler son propre Ajax. Il s'agit d'une simple demande avec une solution simple. Il n'est pas nécessaire d'intercepter chaque caractère entré dans chaque entrée.
En supposant que le formulaire possède un bouton d'envoi, que ce soit un
<button id="save-form">
ou un<input id="save-form" type="submit">
, faites:la source
J'ai entendu dire que ce
which
n'est pas recommandé, alors changez la réponse la mieux notée à cela.réf. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/which
la source
Lorsque le fichier est terminé (chargement terminé), le script détecte chaque événement pour la touche "Entrée" et il désactive l'événement derrière.
la source
Solution complète en JavaScript pour tous les navigateurs
Le code ci-dessus et la plupart des solutions sont parfaits. Cependant, je pense que la "réponse courte" la plus appréciée est incomplète.
Voici donc la réponse complète. en JavaScript avec prise en charge native d'IE 7 également.
Cette solution empêchera désormais l'utilisateur de soumettre à l'aide de la touche Entrée et ne rechargera pas la page, ni ne vous amènera en haut de la page, si votre formulaire se trouve quelque part en dessous.
la source
Que dis-tu de ça:
Cela devrait désactiver tous les formulaires avec des boutons d'envoi dans votre application.
la source