Apakah mungkin untuk membuat sarang bentuk html seperti ini
<form name="mainForm">
<form name="subForm">
</form>
</form>
sehingga kedua bentuk itu berfungsi? Teman saya mengalami masalah dengan ini, bagian dari subForm
pekerjaan, sedangkan bagian lain tidak.
html
nested-forms
Retribusi
sumber
sumber
Jawaban:
Singkatnya, tidak. Anda dapat memiliki beberapa formulir di halaman tetapi tidak boleh disarangkan.
Dari draft kerja html5 :
sumber
Saya mengalami masalah yang sama, dan saya tahu itu bukan jawaban untuk pertanyaan itu, tetapi dapat membantu seseorang dengan masalah seperti ini:
jika ada kebutuhan untuk meletakkan elemen dari dua bentuk atau lebih dalam urutan yang diberikan , atribut HTML5
<input> form
bisa menjadi solusinya.Dari http://www.w3schools.com/tags/att_input_form.asp :
Skenario :
Implementasi :
Di sini Anda akan menemukan kompatibilitas browser.
sumber
<input type="submit"
terhubung dengan nya<form>
yang menentukanaction
,<input />
(s) terkait dengan yang sama<form>
akan digunakan dalam permintaan ituFormulir kedua akan diabaikan, lihat cuplikan dari WebKit misalnya:
sumber
Html polos tidak memungkinkan Anda untuk melakukan ini. Tetapi dengan javascript Anda dapat melakukannya. Jika Anda menggunakan javascript / jquery, Anda bisa mengklasifikasikan elemen formulir Anda dengan kelas dan kemudian menggunakan serialize () untuk membuat cerita bersambung hanya elemen-elemen formulir tersebut untuk subset dari item yang ingin Anda kirim.
Kemudian di javascript Anda, Anda bisa melakukan ini untuk membuat serialisasi elemen class1
Untuk class2 bisa Anda lakukan
Untuk seluruh bentuk
atau sederhana
sumber
Jika Anda menggunakan AngularJS,
<form>
tag apa pun di dalam Andang-app
diganti saat runtime denganngForm
arahan yang dirancang untuk disarangkan.sumber
Karena tahun 2019 saya ingin memberikan jawaban terbaru untuk pertanyaan ini. Dimungkinkan untuk mencapai hasil yang sama dengan bentuk bersarang, tetapi tanpa bersarang. HTML5 memperkenalkan atribut form. Anda bisa menambahkan atribut formulir ke kontrol formulir di luar formulir untuk menautkannya ke elemen formulir tertentu (berdasarkan id).
https://www.impressivewebs.com/html5-form-attribute/
Dengan cara ini Anda dapat menyusun html Anda seperti ini:
Atribut form didukung oleh semua browser modern. Meskipun demikian, IE tidak mendukung hal ini, tetapi IE bukan lagi peramban, melainkan alat kompatibilitas, sebagaimana dikonfirmasi oleh Microsoft sendiri: https://www.zdnet.com/article/microsoft-security-chief-ie-is-not-a -browser-so-stop-use-it-as-your-default / . Sudah saatnya kita berhenti peduli tentang membuat sesuatu berfungsi di IE.
https://caniuse.com/#feat=form-attribute
https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fae-form
Dari spec html:
sumber
Cara lain untuk mengatasi masalah ini, jika Anda menggunakan beberapa bahasa skrip sisi server yang memungkinkan Anda untuk memanipulasi data yang diposting, adalah mendeklarasikan formulir html Anda seperti ini:
Jika Anda mencetak data yang diposting (Saya akan menggunakan PHP di sini), Anda akan mendapatkan array seperti ini:
Maka Anda bisa melakukan sesuatu seperti:
$ _POST Anda sekarang hanya memiliki data "formulir utama" Anda, dan data subformulir Anda disimpan dalam variabel lain yang dapat Anda manipulasi sesuka hati.
Semoga ini membantu!
sumber
Seperti yang dikatakan Craig, tidak.
Namun, mengenai komentar Anda mengapa :
Mungkin lebih mudah menggunakan 1
<form>
dengan input dan tombol "Perbarui", dan gunakan salin input tersembunyi dengan tombol "Kirim Pesanan" di tombol lain<form>
.sumber
http://www.w3.org/MarkUp/html3/forms.html
https://www.w3.org/TR/html4/appendix/changes.html#hA.3.9 (spesifikasi html4 mencatat tidak ada perubahan mengenai formulir bersarang dari 3,2 ke 4)
https://www.w3.org/TR/html4/appendix/changes.html#hA.1.1.12 (spesifikasi html4 mencatat tidak ada perubahan mengenai formulir bersarang dari 4.0 hingga 4.1)
https://www.w3.org/TR/html5-diff/ (spesifikasi html5 mencatat tidak ada perubahan mengenai formulir bersarang dari 4 hingga 5)
https://www.w3.org/TR/html5/forms.html#association-of-controls-and-forms komentar untuk "Fitur ini memungkinkan penulis untuk mengatasi kurangnya dukungan untuk elemen bentuk bersarang.", tetapi tidak tidak menyebutkan di mana ini ditentukan, saya pikir mereka berasumsi bahwa kita harus berasumsi bahwa itu ditentukan dalam spesifikasi html3 :)
sumber
Solusi sederhana adalah dengan menggunakan iframe untuk memegang formulir "bersarang". Secara visual formulir bersarang tetapi pada sisi kode dalam file html yang terpisah sama sekali.
sumber
Anda juga dapat menggunakan formaction = "" di dalam tag tombol.
Ini akan disarangkan dalam bentuk asli sebagai tombol terpisah.
sumber
Bahkan jika Anda bisa membuatnya bekerja di satu browser, tidak ada jaminan bahwa itu akan berfungsi sama di semua browser. Jadi sementara Anda mungkin bisa membuatnya bekerja beberapa saat, Anda tentu tidak akan bisa membuatnya bekerja sepanjang waktu.
sumber
Anda bahkan akan mengalami masalah membuatnya bekerja di versi berbeda dari browser yang sama. Jadi hindari menggunakannya.
sumber
Meskipun saya tidak memberikan solusi untuk bentuk bersarang (itu tidak berfungsi dengan baik), saya menghadirkan solusi yang bekerja untuk saya:
Skenario penggunaan: Bentuk super memungkinkan untuk mengubah item N sekaligus. Ini memiliki tombol "Kirim Semua" di bagian bawah. Setiap item ingin memiliki bentuk bersarang sendiri dengan tombol "Kirim Item # N". Tapi tidak bisa ...
Dalam hal ini, seseorang dapat benar-benar menggunakan bentuk tunggal, dan kemudian memiliki nama tombol menjadi
submit_1
..submit_N
dansubmitAll
dan menanganinya sisi server, dengan hanya melihat params yang berakhir_1
jika nama tombol itusubmit_1
.Ok, jadi tidak banyak penemuan, tapi itu berhasil.
sumber
Tentang formulir bersarang: Saya menghabiskan 10 tahun pada suatu sore mencoba men-debug skrip ajax.
jawaban / contoh saya sebelumnya tidak menjelaskan markup html, maaf.
form_2 selalu gagal mengatakan form_2 tidak valid.
Ketika saya memindahkan ajaxContainer yang menghasilkan form_2
<i>outside</i>
dari form_1, saya kembali berbisnis. Ini menjawab pertanyaan mengapa seseorang bisa membuat sarang. Maksudku, sungguh, untuk apa ID jika tidak menentukan bentuk mana yang akan digunakan? Pasti ada yang lebih baik, pekerjaan yang lebih licin.sumber
Gunakan tag formulir kosong sebelum formulir bersarang Anda
Diuji dan Bekerja pada Firefox, Chrome
Tidak Diuji pada IE
sumber
Meskipun pertanyaannya sudah cukup lama dan saya setuju dengan @ semua orang bahwa bersarang formulir tidak diperbolehkan dalam HTML
Tapi ini sesuatu yang semua mungkin ingin melihat ini
tempat Anda dapat meretas (saya menyebutnya peretasan karena saya yakin ini tidak sah) html untuk memungkinkan peramban memiliki bentuk bersarang
LINK TA FIDDLE
http://jsfiddle.net/nzkEw/10/
sumber
Tidak, Anda tidak dapat memiliki formulir bersarang. Sebagai gantinya, Anda dapat membuka Modal yang berisi formulir dan melakukan pengiriman formulir Ajax.
sumber
Benar-benar tidak mungkin ... Saya tidak dapat membuat tag bentuk ... Namun saya menggunakan kode ini:
dengan
{% csrf_token %}
dan barang-barangdan menerapkan beberapa JS
sumber
Hari ini, saya juga terjebak dalam masalah yang sama, dan menyelesaikan masalah saya telah menambahkan kontrol pengguna dan
pada kontrol ini saya menggunakan kode ini
dan pada acara PreRenderComplete dari halaman panggil metode ini
Saya percaya ini akan membantu.
sumber
Sebelum saya tahu saya tidak seharusnya melakukan ini, saya memiliki formulir bersarang untuk tujuan memiliki beberapa tombol kirim. Berlari seperti itu selama 18 bulan, ribuan transaksi pendaftaran, tidak ada yang menelepon kami tentang kesulitan apa pun.
Formulir bersarang memberi saya ID untuk menguraikan tindakan yang benar untuk diambil. Tidak pecah sampai saya mencoba melampirkan bidang ke salah satu tombol dan Validasi mengeluh. Bukan masalah besar untuk menguraikannya - saya menggunakan string eksplisit pada formulir luar sehingga tidak masalah pengiriman dan formulir tidak cocok. Ya, ya, seharusnya mengambil tombol dari kirim ke klik.
Intinya adalah ada keadaan di mana itu tidak sepenuhnya rusak. Tapi "tidak sepenuhnya rusak" mungkin standar terlalu rendah untuk menembak :-)
sumber