2010-01-07 4 views
10

Je veux appuyer sur la touche entrée pour aller à p2.htm ou p3.htm selon le texte que je saisis. Et je veux aussi appuyer sur le bouton submit1 pour alerter ('no1') manuellement.Comment désactiver le comportement de soumission automatique lorsque vous appuyez sur la touche Entrée?

Cela fonctionne dans FireFox, mais dans IE6, quand j'appuie sur la touche d'entrée, le bouton submit sera envoyé.

Comment puis-je faire le bon choix dans IE 6 comme dans FireFox?

J'utilise javascript et jQuery.

<input id="Text2" type="text" onkeyup="if(event.keyCode==13){go2();}" /> 
<input id="Text3" type="text" onkeyup="if(event.keyCode==13){go3();}" /> 

<input id="submit1" type="submit" value="submit" onclick="alert('no1')" /> 

<script type="text/javascript"> 
    function go2() 
    { 
     window.location = "p2.htm"; 
    } 
    function go3() 
    { 
     window.location = "p3.htm"; 
    } 
</script> 
+1

Je ne vois pas de jQuery ici ... – Skilldrick

Répondre

8

Cette fonction devrait faire l'affaire:

function submitOnEnter(e, page) { 
    var key; 

    if (window.event) 
     key = window.event.keyCode; //IE 
    else 
     key = e.which; //Firefox & others 

    if(key == 13) 
     window.location = page; 
} 

Vous devriez l'appeler comme ceci:

<input id="Text2" type="text" onkeyup="submitOnEnter(event, 'p2.html')" /> 
+0

Il y a une erreur mais votre solution m'aidera. function submitOnEnter (e, page) { touche var; if (window.event) key = window.event.keyCode; // IE sinon key = e.qui; // Firefox et autres if (key == 13) { window.location = page; return false; // empêcher le bouton de soumission automatique } } – Mike108

+0

Merci beaucoup. – Mike108

+0

Oui, vous avez raison, j'ai oublié le retour. – Jojo

5

Modifier le type d'entrée de "soumettre" à "bouton"

+1

Ne le cassez pas complètement lorsque JS n'est pas disponible. Construire sur des choses qui fonctionnent. http://icant.co.uk/articles/pragmatic-progressive-enhancement/ – Quentin

+0

Pour être juste, l'OP est verrouillé dans une solution JS. –

23
<form onsubmit="return false"></form> 

Cela va arrêter le formulaire pr Vous passez à la page suivante après avoir cliqué sur un bouton d'envoi ou appuyé sur Entrée.

+0

3 ans plus tard et toujours sauver la journée. Ne devient pas plus simple que cela. –

+3

Que se passe-t-il si je veux seulement désactiver la soumission sur la touche d'entrée, mais je veux garder le soumettre sur clic ?? – sumid

+0

@sumid, est-ce que [ma réponse ci-dessous] (http://stackoverflow.com/a/6778590/590719) aide dans cette instance? – WEFX

2
<%@taglib uri="/struts-tags" prefix="s" %> 
<html> 
<head> 
    <script type="text/javascript"> 
     function stopsubmit() 
     { 
      document.ourform.onsubmit="return true"; 
     } 
     function pup() 
     { 
      return true; 
     } 
    </script> 
</head> 
<body> 
    <form action="sa.jsp" name="ourform" onsubmit="return false"> 
     <s:submit action="" onclick="stopsubmit()" theme="simple"></s:submit> 
    </form> 
</body> 

21

Si vous utilisez MVC3, vous pouvez désactiver la soumission via Entrez en éditant l'appel BeginForm comme suit:

@using (Html.BeginForm("SomeAction", "SomeController", FormMethod.Post, new { onkeydown = "return event.keyCode!=13" })) 
{ 
    ... 
} 
+1

L'approche la plus simple ici et a travaillé comme un charme! –

+0

Cela désactivera la touche d'entrée dans la zone de texte à l'intérieur du formulaire. – Santosh

5

Le problème avec la solution retenue est que les boutons normaux ne pas soumettre le travail plus . Vous devez écrire tous les boutons.

<form onsubmit="return false"></form> 

Voici une meilleure solution qui ne casse pas les boutons de soumission non javascript. Cette solution indique simplement au navigateur de ne pas faire le comportement par défaut quand un utilisateur frappe la touche d'entrée sur les entrées de formulaire.

// prevent forms from auto submitting on all inputs 
$(document).on("keydown", "input", function(e) { 
    if (e.which==13) e.preventDefault(); 
}); 
Questions connexes