2010-02-07 5 views
17

Existe-t-il un moyen de faire un formulaire PAS d'actualisation ou d'appeler quoi que ce soit lorsque vous appuyez sur la touche "Entrée" de votre clavier?Formulaire HTML - quand j'appuie sur entrer, ça rafraîchit la page!

Merci beaucoup!

Je trouve ce code pour empêcher Entrez de travailler, mais il ne fonctionne pas dans IE :(

$(document).ready(function() { 
    $(window).keydown(function(event){ 
    if(event.keyCode == 13) { 
     event.preventDefault(); 
     return false; 
    } 
    }); 
} 

Répondre

32

Essayez ceci:

$(function() { 
    $("form").submit(function() { return false; }); 
}); 
16

La désactivation de l'événement submit n'est pas un bon Maintenant, vous pouvez jamais soumettre le formulaire en appuyant sur le bouton où il est pour

Plutôt crochet sur leévénement:

<form onkeypress="return event.keyCode != 13"> 

ou saveur jQuery:

$('form').keypress(function(event) { 
    return event.keyCode != 13; 
}); 

13 est le code d'activation de touche Entrée. Cela fonctionne dans tous les navigateurs de IE6 à tous les actuels. Vous devez seulement prendre en compte les zones de texte. Vous pouvez ensuite considérer cette construction à la place:

$(':input:not(textarea)').keypress(function(event) { 
    return event.keyCode != 13; 
}); 
10

Ajoutez la propriété onSubmit sur le tag du formulaire.

<form onSubmit="return false;"> 
+0

la plus simple et la meilleure solution, imo –

2

Vous pouvez empêcher la soumission de formulaire par « Enter » nativement si vous utilisez AngularJS.

Selon la spécification HTML et AngularJS, vous devez vérifier cette liste:

  1. formulaire doit avoir NOaction=... attribut (il gère automatiquement AngularJS)
  2. formulaire doit avoir NObutton avec type="submit" attribut

Donc, si vous n'avez aucun attribut d'action et que vous ne soumettez pas le bouton votre formulaire ne doit pas être envoyé en appuyant sur la touche Entrée.

En outre, codeTouche cross-browser est la suivante:

var code = (e.keyCode ? e.keyCode : e.which); 
+0

Je sais que ce n'était pas une question AngularJS mais cela a fonctionné un régal pour moi (en utilisant AngularJS). –

Questions connexes