Katakan saya punya:
<form method="get" action="something.php">
<input type="text" name="name" />
</form>
<input type="submit" />
Bagaimana cara mengirim formulir itu dengan tombol kirim di luar formulir, saya pikir dalam HTML5 ada atribut tindakan untuk pengiriman, tetapi saya tidak yakin apakah itu sepenuhnya lintas-browser dan jika tidak ada juga untuk melakukan hal ini?
Jawaban:
Pembaruan: Di browser modern, Anda dapat menggunakan
form
atribut untuk melakukan ini .Sejauh yang saya tahu, Anda tidak dapat melakukan ini tanpa javascript.
Inilah yang dikatakan oleh spec
Itu berani saya
Sebuah
submit
tombol dianggap sebagai kontrol.http://www.w3.org/TR/html4/interact/forms.html#h-17.2.1
Dari komentar
Mengapa tidak menempatkan bagian
input
dalam formulir, tetapi gunakan CSS untuk menempatkannya di tempat lain di halaman?sumber
Di HTML5, ada atribut form . Pada dasarnya
sumber
<button type="submit" form="frmFoo" onclick="!this.form&&$('#'+$(this).attr('form')).submit()">
Seperti yang diungkapkan oleh eksperimen, form..form ini adalah formulir terlampir DomElement, sedangkan nol sebaliknya. // edit: jQuery, tetapi mungkin dengan vanilla, juga ofc<button type="submit" form="frmFoo" onclick="!this.form && document.getElementById('myform').submit()">
Solusi yang berfungsi bagus untuk saya, masih belum ada di sini. Hal ini membutuhkan memiliki visual yang tersembunyi
<submit>
atau<input type="submit">
elemen isi setiap modul yang<form>
, dan terkait<label>
di luar unsur itu. Akan terlihat seperti ini:Sekarang tautan ini memungkinkan Anda untuk 'mengklik'
<submit>
elemen formulir dengan mengklik<label>
elemen tersebut.sumber
label
bukan elemen fokus (AFAIK) sehingga tidak intuitif untuk pengguna yang hanya menggunakan keyboard untuk bernavigasi ke 'tombol' dan kemudian tekan spasi untuk mengaktifkan tombol itu misalnya. (Saya sadar Anda bisa menekan<enter>
saja, tapi itu bukan satu-satunya cara orang terbiasa menavigasi formulir dengan keyboard)label
tombol tab via, Anda dapat menggunakantabindex
atribut HTML:<label for="submit-form" tabindex="0">Submit</label>
sesuai pertanyaan inijika Anda dapat menggunakan jQuery, Anda dapat menggunakan ini
Jadi, intinya adalah membuat tombol seperti Kirim, dan letakkan tombol kirim yang sebenarnya dalam bentuk (tentu saja menyembunyikannya), dan kirim formulir dengan jquery melalui mengklik tombol 'Kirim Palsu'. Semoga ini bisa membantu.
sumber
$('button[form]').click(function (){ var formId = $(this).attr('form'); $('#' + formId).submit(); });
Ini berhasil bagi saya, untuk memiliki tombol kirim jauh untuk formulir.
sumber
Mirip dengan solusi lain di sini, dengan sedikit modifikasi:
https://www.w3schools.com/tags/att_form.asp
sumber
Coba ini:
Meskipun saya akan menyarankan menambahkan
id
ke formulir dan mengakses dengan itu alih-alihdocument.forms[index]
.sumber
Anda selalu dapat menggunakan jQuery:
sumber
Berikut ini adalah solusi yang cukup solid yang menggabungkan ide-ide terbaik sejauh ini serta memasukkan solusi saya untuk masalah yang disorot dengan Offerein's. Tidak ada javascript yang digunakan.
Jika Anda peduli tentang kompatibilitas mundur dengan IE (dan bahkan Edge 13), Anda tidak dapat menggunakan
form="your-form"
atribut .Gunakan input kirim standar tanpa tampilan dan tambahkan label di luar formulir:
Perhatikan penggunaan
display: none;
. Ini disengaja. Menggunakan.hidden
konflik kelas bootstrap dengan jQuery.show()
dan.hide()
, dan sejak itu telah ditinggalkan dalam Bootstrap 4.Sekarang cukup tambahkan label untuk kiriman Anda, (gaya untuk bootstrap):
Tidak seperti solusi lain, saya juga menggunakan tabindex - set ke 0 - yang berarti bahwa kita sekarang kompatibel dengan tab keyboard. Menambahkan
role="button"
atribut memberinya gaya CSScursor: pointer
. Et voila. ( Lihat biola ini ).sumber
Enter
tidak memiliki efek. Dengan demikian, bisa tab tampaknya tidak ada gunanya. Apakah ada cara untuk melakukan ini tanpa menggunakan JavaScript?<input... />
sintaks penutupan diri yang ceroboh dan tidak valid , yang hampir semua orang secara terang-terangan dan tidak benar menggunakan di sini (juga), dengan tag tanpa-tutup yang benar! :) Kudos!Ini bekerja dengan sempurna! ;)
Ini dapat dilakukan dengan menggunakan Ajax dan dengan apa yang saya sebut: "elemen bentuk cermin". Alih-alih mengirim formulir dengan elemen di luar, Anda bisa membuat formulir palsu. Formulir sebelumnya tidak diperlukan.
Kode ajax akan seperti:
Ini sangat berguna jika Anda ingin mengirim beberapa data di dalam formulir lain tanpa mengirimkan formulir induk.
Kode ini mungkin dapat diadaptasi / dioptimalkan sesuai dengan kebutuhan. Ini bekerja dengan sempurna !! ;) Juga berfungsi jika Anda menginginkan kotak pilihan seperti ini:
Saya harap ini membantu seseorang seperti itu membantu saya. ;)
sumber
Mungkin ini bisa berhasil, tapi saya tidak tahu apakah ini HTML yang valid.
sumber
Saya punya masalah di mana saya mencoba untuk menyembunyikan formulir dari elemen sel tabel, tetapi masih menunjukkan tombol kirim formulir. Masalahnya adalah bahwa elemen form masih mengambil ruang kosong tambahan, membuat format sel tabel saya terlihat aneh. Layar: tidak ada dan visibilitas: atribut tersembunyi tidak berfungsi karena itu akan menyembunyikan tombol kirim juga, karena itu terkandung dalam formulir yang saya coba sembunyikan. Jawaban sederhananya adalah mengatur tinggi form menjadi hampir tidak menggunakan CSS
Begitu,
CSS -
bekerja untukku.
sumber
Saya menggunakan cara ini, dan menyukainya, itu memvalidasi formulir sebelum mengirimkan juga kompatibel dengan safari / google. tidak ada jquery nn
sumber