2010-01-07 4 views
10

Chcę nacisnąć klawisz Enter, aby przejść do p2.htm lub p3.htm zgodnie z tekstem wejściowym, który wpisałem. I chcę również nacisnąć przycisk submit1, aby ręcznie ("nr 1").Jak wyłączyć automatyczne wysyłanie po naciśnięciu klawisza Enter?

Działa w FireFox, ale w IE6, po naciśnięciu klawisza Enter, zostanie przesłany przycisk przesyłania.

Jak mogę to naprawić w IE 6, tak jak w FireFox?

Używam javascript i 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

Nie widzę tutaj żadnej jQuery ... – Skilldrick

Odpowiedz

8

Ta funkcja powinna załatwić sprawę:

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; 
} 

należy zadzwonić to tak:

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

Jest jakiś błąd, ale twoje rozwiązanie pomaga mi. funkcja submitOnEnter (e, strona) { klawisz var; if (window.event) key = window.event.keyCode; // IE else key = e.which; // Firefox i inne jeśli (klucz == 13) { window.location = page; return false; // zapobiec automatycznemu kliknięciu przycisku przesyłania } } – Mike108

+0

Dziękuję bardzo. – Mike108

+0

Tak, masz rację, że zapomniałem o powrocie. – Jojo

5

Zmień typ wejścia z "submit" na "przycisk"

+1

Nie rób tego całkowicie, gdy JS jest niedostępny. Buduj na rzeczy, które działają. http://icant.co.uk/articles/pragmatic-progressive-enhancement/ – Quentin

+0

Aby być sprawiedliwym, OP jest zablokowany w rozwiązaniu JS. –

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

To zatrzyma formularz przechodzenie do następnej strony po kliknięciu przycisku przesyłania lub naciśnięciu klawisza Enter.

+0

3 lata później i wciąż oszczędzając dzień. Nie jest prostsze niż to. –

+3

Co zrobić, jeśli chcę wyłączyć przesyłanie przy użyciu klucza Enter, ale chcę, aby przesyłanie było włączone po kliknięciu? – sumid

+0

@sumid, czy [moja odpowiedź poniżej] (http://stackoverflow.com/a/6778590/590719) pomoże w tym przypadku? – 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

przypadku korzystania MVC3 można wyłączyć złożenie przez Enter edytując wywołanie BeginForm następująco:

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

Najprostsze podejście tutaj i działało jak czar! –

+0

Spowoduje to wyłączenie klawisza Enter w obszarze tekstowym wewnątrz formularza. – Santosh

5

Problem z przyjętego rozwiązania jest to, że normalne przyciski przesyłania nie dłuższą pracę . Musisz skryptować wszystkie przyciski.

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

Oto lepsze rozwiązanie, które nie powoduje przerwania przycisków przesyłania w języku innym niż javascript. To rozwiązanie po prostu informuje przeglądarkę, aby nie wykonywała domyślnego zachowania, gdy użytkownik natrafi na klawisz Enter na wejściach formularzy.

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