Mam następujący problem w ASP.NET: istnieje formularz, który zawiera pole tekstowe i przycisk obok niego, który ma być naciśnięty przez użytkownika po wypełnieniu pola (próbka na http://www.burnthespam.info, kliknij "Wybierz swoją" lub korzystając z ReCaptcha w wyskakującym okienku). Często zamiast tego użytkownicy naciskają przycisk ENTER
, aby przesłać formularz.Obsługa przycisku ENTER w TextBox, ASP.NET
Nie powoduje to uruchomienia zdarzenia kliknięcia przycisku i może spowodować nieoczekiwane zachowanie. W "burnthespam" próbowałem rozwiązać problem, sprawdzając, czy w polu tekstowym znajdują się dane (ale teraz, jeśli zrobisz coś innego niż naciśnięcie klawisza), aby to obejść.
Wiesz, czy istnieje inny sposób obsłużyć przesyłanie formularza z ENTER
klucza lub fragment kodu JavaScript, który po naciśnięciu ENTER
naciśnie przycisk mi się podoba?
EDIT
Chcę obsłużyć zdarzenia klawisz ENTER na stronie serwera, tj. Mam już
protected void button_Click(object sender, EventArgs e)
{
Response.Redirect(...);
}
chcę metoda na miano nie tylko wtedy, gdy przesłać formularz za pomocą przycisku (kliknij lub pomieszczenie wraz z nim podświetlone), ale również wtedy, gdy użytkownik naciśnie ENTER
gdy skupienie pola tekstowego
EDIT 2
wiesz, jeśli to możliwe, aby programowo kliknij przycisk w JavaScript? Być może nie można zapobiec phishingowi/spamowaniu (na przykład Facebook i "udostępnij znajomym"), ale nadal chciałbym zapytać ...
Właśnie zauważyłem, że twój kod, z niewielkimi modyfikacjami, jest po prostu IGNOROWANY przez IE8 podczas pracy w Firefoksie. Czy może to wynikać z faktu, że TextBox to gaia: TextBox z Gai AJAX WebWidgets i pojawia się dopiero po odświeżeniu? Sprawdziłem dwukrotnie, czy wygenerowany kod HTML pasuje do tego dla kliknięcia przycisku, i nawet nie musiałem wyłączyć sprawdzania poprawności zdarzeń (ponieważ działa w FF), ale nadal otrzymuję pusty komunikat HTTP (nie AJAX jak FF) –
To jest dziwne. Jeśli istnieje javascript i wygląda na to, że javascript na przycisku i przycisk działa, to można by pomyśleć, że skrypt w polu tekstowym powinien mieć taki sam wynik. Czy jest możliwe, że pole tekstowe gaia rejestruje zdarzenie onKeyDown, a to powoduje, że nie wywołuje on skryptu wbudowanego. Powinieneś wypróbować debuggera skryptu i sprawdzić, czy wywoływana jest metoda dopostback. –
Próba użycia tego ... Mam to działa, zamieniając onkeyevent na "if (event.keyCode == 13) {alert ('go');}" ... "pojawia się okienko alertu" go "pojawia się za każdym razem enter jest kliknięty. Ale kiedy umieszczę oryginalny kod z powrotem na stronie, odświeża się, a zdarzenie kliknięcia LinkButton nigdy nie jest wywoływane. Jakieś pomysły? (Mój kod jest prawie identyczny z twoim przykładem, z wyjątkiem tego, że mam tylko jeden LinkButton, który wywołują oba TextBoxy). Testuję to w IE9. – cavillac