2012-01-24 12 views
95

Powiel możliwe:
HTML: Submitting a form by pressing enter without a submit buttonPrześlij formularz za pomocą klawisza Enter bez przycisku przesyłania?

Jak mogę przesłać formularz z tylko klawisz Enter na polu tekstowym, bez konieczności dodawania przycisku przedstawienia?

Pamiętam, że działało to w przeszłości, ale przetestowałem je teraz i formularz nie zostanie przesłany, chyba że w polu wejściowym znajduje się pole do przesyłania.

+0

Bardzo przydatne pytanie, dziękuję) –

Odpowiedz

189
$("input").keypress(function(event) { 
    if (event.which == 13) { 
     event.preventDefault(); 
     $("form").submit(); 
    } 
}); 
+2

Nie zapomnij dodać # przed wejściem id! – MadsterMaddness

+8

@MadsterMaddness Użyj '#' tylko wtedy, gdy określamy ID elementu. Z tej odpowiedzi określa WSZYSTKIE elementy ''. – Mai

44

Zmień #form do ID formularza za

$('#form input').keydown(function(e) { 
    if (e.keyCode == 13) { 
     $('#form').submit(); 
    } 
}); 

Lub alternatywnie

$('input').keydown(function(e) { 
    if (e.keyCode == 13) { 
     $(this).closest('form').submit(); 
    } 
}); 
+8

Możesz powiązać zdarzenie keydown tylko na formularzu, zamiast wiązania poszczególnych danych wejściowych: zdarzenie keydown będzie propagować do postaci. – Beejamin

+0

bardzo pomocne! nie ma sensu, aby nie umieszczać przycisków formularza wszędzie – cwiggo

+2

Jeśli twój formularz zawierał wiele elementów wejściowych, to nieco lepiej byłoby powiązać program obsługi z formularzem i filtrować zdarzenia z elementów wejściowych, takich jak to: $ ("# form"). keydown ',' input ', function (e) {... –

14

odpowiedź Jay Gilford będzie działać, ale myślę, że naprawdę Najprostszym sposobem jest po prostu slap display: none; na przycisk przesyłania w formularzu.

+4

To nie działa dla mnie, muszę ustawić widoczność: ukryty; zamiast tego. –

5

@ Odpowiedź JayGuilford jest dobra, ale jeśli nie chcesz zależność JS, możesz użyć elementu submit i po prostu ukryć go za pomocą display: none;.

Powiązane problemy