Mam standardowy formularz logowania - pole tekstowe e-mail, pole hasła i przycisk przesyłania w projekcie AIR korzystającym z HTML / jQuery. Po naciśnięciu klawisza Enter na formularzu cała zawartość formularza znika, ale formularz nie został przesłany. Czy ktoś wie, czy to jest problem z Webkitem (Adobe AIR używa Webkit do HTMLa), czy też mam problemy?
Próbowałem:
$('.input').keypress(function (e) {
if (e.which == 13) {
$('form#login').submit();
}
});
Ale to nie powstrzymało zachowania rozliczeniowego ani nie przesłało formularza. Z formularzem nie ma żadnych działań - czy to może być problem? Czy mogę umieścić funkcję javascript w akcji?
Odpowiedzi:
Sprawdź tę odpowiedź stackoverflow: event.preventDefault () vs. return false
Zasadniczo „return false” to to samo co call
e.preventDefault
ie.stopPropagation()
.źródło
Oprócz zwrotu false, jak wspomniał Jason Cohen. Być może będziesz musiał zapobiec domyślnemu
źródło
return false
w zdarzeniu zarządzanym przez jQuery automatycznie wywołuje e.preventDefault ()Nie wiem, czy to pomoże, ale możesz spróbować symulować kliknięcie przycisku wysyłania zamiast bezpośredniego przesyłania formularza. Mam następujący kod w produkcji i działa dobrze:
Uwaga: jQuery ('# upload'). Focus () powoduje animację przycisku po naciśnięciu enter.
źródło
Wróć,
false
aby zapobiec kontynuowaniu naciśnięcia klawisza.źródło
Czy jest jakiś powód, dla którego musisz podpiąć się i przetestować klawisz Enter?
Nie możesz po prostu dodać
do formularza i czy należy go naturalnie przesłać po naciśnięciu klawisza Enter? Możesz nawet zaczepić
onsubmit
akcję formularza i wywołać stamtąd funkcję sprawdzania poprawności, jeśli chcesz ...Możesz nawet użyć tego
onsubmit
jako testu, aby sprawdzić, czy formularz jest przesyłany, ale nie zadziała, jeśli zadzwoniszform.submit()
.źródło
return false;
wszystko.Oto sposób, aby to zrobić jako wtyczkę JQuery (na wypadek, gdybyś chciał ponownie użyć tej funkcji):
Teraz, jeśli chcesz ozdobić
<input>
element za pomocą tego rodzaju funkcji, jest to tak proste:źródło
Możesz także po prostu dodać
onsubmit="return false"
do kodu formularza na stronie, aby zapobiec domyślnemu zachowaniu.Następnie podpisz (
.bind
lub.live
)submit
zdarzenie formularza do dowolnej funkcji za pomocą jQuery w pliku javascript.Oto przykładowy kod, który pomoże:
HTML
JavaScript + jQuery
Działa od 13.04.2011, z Firefox 4.0 i jQuery 1.4.3
źródło
To jest mój kod:
źródło
Aby zachować dostępność, należy użyć tego do ustalenia kodu dostępu:
źródło
Tylko dodawanie dla łatwej implementacji. Możesz po prostu utworzyć formularz, a następnie ukryć przycisk przesyłania:
Na przykład:
źródło
Używam teraz
Na początku dodałem moduł obsługi zdarzeń do przycisku przesyłania, który spowodował błąd.
źródło
Dowiedziałem się dzisiaj, że naciśnięcie klawisza nie jest uruchamiane po naciśnięciu klawisza Enter, więc możesz zamiast tego przejść na keydown () lub keyup ().
Mój skrypt testowy:
Dane wyjściowe w konsoli podczas wpisywania „A Enter B” na klawiaturze:
Widzisz w drugiej sekwencji, że brakuje „naciśnięcia klawisza”, ale kod klawisza i rejestru rejestru „13” jest wciśnięty / zwolniony. Zgodnie z dokumentacją jQuery dotyczącą funkcji keypress () :
Testowane na IE11 i FF61 na Server 2012 R2
źródło
W kodach HTML:
W kodach Js:
źródło
Spróbuj tego:
źródło