Powiedz, że mam:
<form method="get" action="something.php">
<input type="text" name="name" />
</form>
<input type="submit" />
Jak przejść do przesłania tego formularza za pomocą tego przycisku przesyłania poza formularzem, myślę, że w HTML5 jest atrybut akcji dla przesyłania, ale nie jestem pewien, czy jest to w pełni przeglądarka i czy tak nie jest Zrób to?
Odpowiedzi:
Aktualizacja: w nowoczesnych przeglądarkach możesz to zrobić za pomocą
form
atrybutu .O ile mi wiadomo, nie można tego zrobić bez javascript.
Oto, co mówi specyfikacja
To moja śmiała
submit
Przycisk uważany jest kontrola.http://www.w3.org/TR/html4/interact/forms.html#h-17.2.1
Z komentarzy
Dlaczego nie umieścić
input
formularza w środku, ale użyć CSS, aby umieścić go w innym miejscu na stronie?źródło
W HTML5 istnieje atrybut formularza . Gruntownie
źródło
<button type="submit" form="frmFoo" onclick="!this.form&&$('#'+$(this).attr('form')).submit()">
płynną rezerwę : jak wykazały eksperymenty, this.form jest dołączoną formą DomElement, podczas gdy w przeciwnym razie jest zerowy. // edycja: jQuery, ale możliwe także z wanilią, również ofc<button type="submit" form="frmFoo" onclick="!this.form && document.getElementById('myform').submit()">
Wciąż tu brakuje rozwiązania, które działa dla mnie świetnie. Wymaga posiadania wizualnie ukrytego elementu
<submit>
lub<input type="submit">
elementu<form>
powiązanego<label>
poza nim. Wyglądałoby to tak:Teraz ten link umożliwia „kliknięcie”
<submit>
elementu formularza przez kliknięcie<label>
elementu.źródło
label
nie jest elementem aktywowanym (AFAIK), więc nie jest intuicyjny dla użytkownika, który używa tylko klawiatury do nawigacji do „przycisku”, a następnie na przykład naciska spację, aby aktywować ten przycisk. (Zdaję sobie sprawę, że możesz<enter>
zamiast tego nacisnąć , ale to nie jedyny sposób, w jaki ludzie są przyzwyczajeni do nawigacji po formularzach za pomocą klawiatury)label
przycisku zakładki via, możesz użyćtabindex
atrybutu HTML:<label for="submit-form" tabindex="0">Submit</label>
zgodnie z tym pytaniemjeśli możesz użyć jQuery, możesz użyć tego
Najważniejsze jest więc utworzenie przycisku takiego jak Prześlij i umieszczenie prawdziwego przycisku Prześlij w formularzu (oczywiście ukrywanie go) i przesłanie formularza za pomocą jquery poprzez kliknięcie przycisku „Fake Prześlij”. Mam nadzieję, że to pomoże.
źródło
$('button[form]').click(function (){ var formId = $(this).attr('form'); $('#' + formId).submit(); });
To działało dla mnie, aby mieć zdalny przycisk przesyłania formularza.
źródło
Podobne do innego rozwiązania tutaj, z niewielkimi modyfikacjami:
https://www.w3schools.com/tags/att_form.asp
źródło
Spróbuj tego:
Chociaż sugerowałbym dodanie
id
do formularza i uzyskanie dostępu przez to zamiastdocument.forms[index]
.źródło
Zawsze możesz użyć jQuery:
źródło
Oto całkiem solidne rozwiązanie, które zawiera najlepsze dotychczasowe pomysły, a także zawiera moje rozwiązanie problemu wyróżnionego w Offerein. Nie używa się javascript.
Jeśli zależy ci na kompatybilności wstecznej z IE (a nawet Edge 13), nie możesz użyć tego
form="your-form"
atrybutu .Użyj standardowego wejścia przesłanego bez wyświetlania i dodaj etykietę poza formularzem:
Zwróć uwagę na użycie
display: none;
. To jest celowe. Używanie.hidden
klas bootstrap powoduje konflikty z jQuery's.show()
i.hide()
od tego czasu jest przestarzałe w Bootstrap 4.Teraz wystarczy dodać etykietę do przesłania (w stylu bootstrap):
W przeciwieństwie do innych rozwiązań używam również tabindex - ustawionego na 0 - co oznacza, że jesteśmy teraz kompatybilni z klawiszami tabulacji. Dodanie
role="button"
atrybutu nadaje mu styl CSScursor: pointer
. Zrobione. ( Zobacz to skrzypce ).źródło
Enter
nie ma żadnego efektu. Zatem możliwość zakładania się na to wydaje się trochę bezcelowa. Czy można to zrobić bez użycia JavaScript?<input... />
składni samozamykającej, która prawie wszyscy rażąco i niepoprawnie używają tutaj (też), do właściwej pustej etykiety no-close! :) Kudos!To działa idealnie! ;)
Można to zrobić za pomocą Ajaxa i za pomocą tego, co nazywam: „elementem lustrzanego formularza”. Zamiast wysłać formularz z elementem zewnętrznym, możesz utworzyć fałszywy formularz. Poprzedni formularz nie jest potrzebny.
Kod ajax będzie wyglądał następująco:
Jest to bardzo przydatne, jeśli chcesz wysłać dane w innym formularzu bez przesyłania formularza nadrzędnego.
Ten kod prawdopodobnie można dostosować / zoptymalizować w zależności od potrzeb. Działa idealnie !! ;) Działa również, jeśli chcesz wybrać pole opcji takie jak to:
Mam nadzieję, że pomogło to komuś takiemu, pomogło mi. ;)
źródło
Może to może działać, ale nie wiem, czy to jest poprawny HTML.
źródło
Wystąpił problem polegający na tym, że próbowałem ukryć formularz przed elementem komórki tabeli, ale nadal wyświetlałem przycisk przesyłania formularzy. Problem polegał na tym, że element formularza wciąż zajmował dodatkowe puste miejsce, przez co format mojej komórki tabeli wyglądał dziwnie. Wyświetlanie: brak i widoczność: ukryte atrybuty nie działały, ponieważ również ukrywałby przycisk wysyłania, ponieważ był zawarty w formularzu, który próbowałem ukryć. Prostą odpowiedzią było ustawienie wysokości formularzy na prawie nic za pomocą CSS
Więc,
CSS -
pracował dla mnie.
źródło
Użyłem w ten sposób i podobało mi się, to sprawdza poprawność formularza przed przesłaniem również jest kompatybilny z safari / google. bez jquery nn
źródło