Załóżmy, że tworzysz kreatora w formie HTML. Jeden przycisk wraca, a drugi idzie do przodu. Ponieważ przycisk Wstecz pojawia się jako pierwszy w znaczniku po naciśnięciu Enter, użyje tego przycisku do przesłania formularza.
Przykład:
<form>
<!-- Put your cursor in this field and press Enter -->
<input type="text" name="field1" />
<!-- This is the button that will submit -->
<input type="submit" name="prev" value="Previous Page" />
<!-- But this is the button that I WANT to submit -->
<input type="submit" name="next" value="Next Page" />
</form>
Chciałbym zdecydować, który przycisk służy do przesłania formularza, gdy użytkownik naciśnie Enter. W ten sposób po naciśnięciu Enterkreator przejdzie do następnej strony, a nie poprzedniej. Czy musisz tabindex
to zrobić?
źródło
Zmień poprzedni typ przycisku na przycisk taki jak ten:
Teraz przycisk Dalej będzie domyślny, a ponadto możesz dodać do niego
default
atrybut, aby przeglądarka go podświetliła w następujący sposób:źródło
default
atrybucie mówisz? Nie ma atrybutu „default”, który byłby prawidłowy: w3.org/html/wg/drafts/html/master/... (nie w HTML5, HTML 4.01 Transitional / Strict, XHTML 1.0 Strict). I nie rozumiem, dlaczego zmiana typu wejścia zsubmit
nabutton
miałaby być lepsza. Możesz mieć wiele elementów wejściowych typu przesyłania w jednej formie bez problemu. Naprawdę nie rozumiem, dlaczego ta odpowiedź jest tak pozytywna.default
atrybut jest atrybutem globalnym; wyliczony atrybut .., który jest powiązany ze stanami wyliczenia: w3.org/html/wg/drafts/html/master/… . poza tym punktem ... aspekt przycisku tej odpowiedzi nie jest odpowiedzią .. jest to „ sugestia warunkowa ” lub zapytanie ( samo pytanie ).type="button"
nie przesyła formularza,type="submit"
robi, ale zmiana rodzaju tych przycisków zdecydowanie nie jest rozwiązaniem, ponieważ te przyciski powinny zasadniczo zachowywać się w ten sam sposób - pytanie OP było takie, jak zrobić przycisk „Dalej” domyślne dla naciśnięcia klawisza Enter. I jest możliwe rozwiązanie w zaakceptowanej odpowiedzi.default
atrybutu dlainput
tagów (jak już wspomniałem wcześniej) w HTML, a (popularne) przeglądarki NIE podświetlą przycisku z tym atrybutem, co oznacza, że nie ma niestandardowej implementacji tego atrybutu - więc nadal nie wiem o czym mówił @Wally Lawless i dlaczego ta odpowiedź jest tak przereklamowana. Wdefault
HTML5 wprowadzono tylko jeden poprawny atrybut, ALE tylko dla<track>
znacznika: developer.mozilla.org/en-US/docs/Web/HTML/Element/trackNadaj przyciskom przesyłania taką samą nazwę:
Gdy użytkownik naciska, Entera żądanie trafia do serwera, możesz sprawdzić wartość kodu
submitButton
po stronie serwera, który zawiera zbiórname/value
par formularzy . Na przykład w ASP Classic :Odniesienie: Używanie wielu przycisków przesyłania w jednym formularzu
źródło
Jeśli fakt, że pierwszy przycisk jest domyślnie używany, jest spójny w różnych przeglądarkach, umieść je we właściwy sposób w kodzie źródłowym, a następnie użyj CSS, aby zmienić ich pozorne pozycje.
float
na lewo i na prawo, aby na przykład przełączać je wizualnie.źródło
Czasami dostarczone rozwiązanie @palotasb nie jest wystarczające. Są przypadki użycia, w których na przykład przycisk „Filtr” przesyła się nad przyciskami, takimi jak „Następny i poprzedni”. Znalazłem obejście tego: skopiuj przycisk przesyłania, który musi działać jako domyślny przycisk przesyłania w ukrytym div i umieść go w formularzu nad dowolnym innym przyciskiem przesyłania. Technicznie będzie on przesłany innym przyciskiem po naciśnięciu Enter niż po kliknięciu widocznego przycisku Dalej. Ale ponieważ nazwa i wartość są takie same, wynik nie ma różnicy.
źródło
Chciałbym użyć JavaScript, aby przesłać formularz. Funkcja zostanie uruchomiona przez zdarzenie OnKeyPress elementu formularza i wykryje, czy Enterklucz został wybrany. W takim przypadku prześle formularz.
Oto dwie strony, które podają techniki, jak to zrobić: 1 , 2 . Na podstawie tych oto przykład użycia (na podstawie tutaj ):
źródło
Jeśli naprawdę chcesz, aby działało jak okno dialogowe instalacji, po prostu skoncentruj się na przycisku „Dalej” OnLoad.
W ten sposób, jeśli użytkownik kliknie Return, formularz prześle i przejdzie do przodu. Jeśli chcą wrócić, mogą nacisnąć Tabprzycisk lub kliknąć przycisk.
źródło
Nie można tego zrobić za pomocą czystego HTML. Musisz polegać na JavaScript w tej sztuczce.
Jeśli jednak umieścisz dwie strony na stronie HTML, możesz to zrobić.
Formularz 1 miałby poprzedni przycisk.
Form2 miałby wszelkie dane wejściowe użytkownika + następny przycisk.
Gdy użytkownik naciśnie Enterw formularzu 2, uruchomi się przycisk Dalej prześlij.
źródło
Możesz to zrobić za pomocą CSS.
Next
Najpierw umieść przyciski w znaczniku , a następniePrev
przycisk.Następnie użyj CSS, aby ustawić je tak, aby wyglądały tak, jak chcesz.
źródło
Działa to bez JavaScript lub CSS w większości przeglądarek:
Firefox, Opera, Safari i Google Chrome działają wszystkie.
Jak zawsze problem stanowi Internet Explorer.
Ta wersja działa, gdy JavaScript jest włączony:
Wada tego rozwiązania polega na:
Poprzednia strona nie działa, jeśli używasz przeglądarki Internet Explorer z wyłączonym JavaScript.
Pamiętaj, że przycisk Wstecz nadal działa!
źródło
Jeśli masz wiele aktywnych przycisków na jednej stronie, możesz zrobić coś takiego:
Zaznacz pierwszy przycisk, który chcesz uruchomić po Enternaciśnięciu klawisza, jako domyślny przycisk w formularzu. W przypadku drugiego przycisku powiąż go z Backspaceprzyciskiem na klawiaturze. Kod Backspacezdarzenia to 8.
źródło
Aby to zrobić, wystarczy zmienić kolejność kart. Nie komplikuj.
Inną prostą opcją byłoby umieszczenie przycisku Wstecz za przyciskiem Prześlij w kodzie HTML, ale przesunięcie go w lewo, aby pojawił się na stronie przed przyciskiem Prześlij.
źródło
Nie zmieniaj nazwy wszystkich przycisków przesyłania - „poprzednia”.
Jedyną różnicą jest
value
atrybut o unikalnych wartościach. Podczas tworzenia skryptu te unikalne wartości pomogą nam dowiedzieć się, który przycisk przesyłania został naciśnięty.I napisz następujące kodowanie:
źródło
name="perv"
?Inną prostą opcją byłoby umieszczenie przycisku Wstecz po przycisku przesyłania w kodzie HTML, ale przesunięcie go w lewo, aby pojawił się na stronie przed przyciskiem przesyłania.
Aby to zrobić, wystarczy zmienić kolejność kart. Nie komplikuj.
źródło
Kiedy po raz pierwszy się z tym spotkałem, wpadłem na hack onclick () / JavaScript, gdy wyborów nie ma w poprzedniej / następnej wersji, którą wciąż lubię za jej prostotę. To wygląda tak:
Kliknięcie dowolnego przycisku przesyłania powoduje zapisanie żądanej operacji w ukrytym polu (będącym polem ciągu zawartym w modelu, z którym powiązany jest formularz) i przesłanie formularza do kontrolera, który podejmuje wszystkie decyzje. W kontrolerze piszesz po prostu:
Możesz również nieco to zaostrzyć za pomocą numerycznych kodów operacji, aby uniknąć parsowania ciągów, ale jeśli nie będziesz grać z wyliczeniami, kod jest mniej czytelny, modyfikowalny i sam dokumentuje się, a parsowanie jest w każdym razie banalne.
źródło
From https://html.spec.whatwg.org/multipage/forms.html#implicit-submission
Kolejne wejście powinno mieć typ = „prześlij”, a zmiana poprzedniego wejścia na typ = „przycisk” powinna dać pożądane zachowanie domyślne.
źródło
Oto, co wypróbowałem:
if
instrukcję, która wykona wymagane działanie po kliknięciu dowolnego przycisku.W PHP
źródło
Zetknąłem się z tym pytaniem, próbując znaleźć odpowiedź na to samo, tylko z kontrolkami ASP.NET, kiedy zorientowałem się, że przycisk ASP ma właściwość o nazwie,
UseSubmitBehavior
która pozwala ci ustawić, który z nich przesyła.Na wypadek, gdyby ktoś szukał przycisku ASP.NET, aby to zrobić.
źródło
Za pomocą JavaScript (tutaj jQuery) możesz wyłączyć przycisk poprzedni przed przesłaniem formularza.
źródło
Spróbuj tego..!
źródło
W ten sposób rozwiązałem bardzo podobny problem:
Jeśli JavaScript jest włączony (w większości przypadków obecnie), wówczas wszystkie przyciski przesyłania są „ zdegradowane ” do przycisków przy ładowaniu strony przez JavaScript (jQuery). Zdarzenia kliknięcia na przyciskach „ zdegradowanych ” są również obsługiwane przez JavaScript.
Jeśli JavaScript nie jest włączony, formularz jest wyświetlany w przeglądarce z wieloma przyciskami przesyłania. W tym przypadku uderzania Enterna zasadzie
textfield
w formie przedstawi formularz z pierwszego przycisku zamiast zamierzonego domyślnie , ale przynajmniej forma jest nadal użyteczny: można złożyć zarówno z poprz i kolejnych przycisków.Przykład roboczy:
źródło
Możesz użyć,
Tabindex
aby rozwiązać ten problem. Bardziej skutecznym sposobem na osiągnięcie tego jest również zmiana kolejności przycisków.Zmień kolejność przycisków i dodaj
float
wartości, aby przypisać im żądaną pozycję, którą chcesz pokazać w swoimHTML
widoku.źródło
Korzystając z podanego przykładu:
Jeśli klikniesz „Poprzednia strona”, zostanie przesłana tylko wartość „poprzednia”. Jeśli klikniesz „Następna strona”, zostanie przesłana tylko wartość „następna”.
Jeśli jednak naciśniesz Entergdzieś na formularzu, ani „poprzedni”, ani „następny” nie zostaną przesłane.
Korzystając z pseudokodu, możesz wykonać następujące czynności:
źródło