Saya tahu bahwa XHTML tidak mendukung tag formulir bersarang dan saya sudah membaca jawaban lain di sini tentang Stack Overflow mengenai masalah ini, tapi saya masih belum menemukan solusi yang elegan untuk masalah ini.
Beberapa mengatakan Anda tidak membutuhkannya dan mereka tidak dapat memikirkan skenario jika ini diperlukan. Yah, secara pribadi saya tidak bisa memikirkan skenario yang saya tidak membutuhkannya.
Mari kita lihat contoh yang sangat sederhana:
Anda membuat aplikasi blog dan Anda memiliki formulir dengan beberapa bidang untuk membuat posting baru dan toolbar dengan "tindakan" seperti "Simpan", "Hapus", "Batalkan".
<form
action="/post/dispatch/too_bad_the_action_url_is_in_the_form_tag_even_though_conceptually_every_submit_button_inside_it_may_need_to_post_to_a_diffent_distinct_url"
method="post">
<input type="text" name="foo" /> <!-- several of those here -->
<div id="toolbar">
<input type="submit" name="save" value="Save" />
<input type="submit" name="delete" value="Delete" />
<a href="/home/index">Cancel</a>
</div>
</form>
Tujuan kami adalah menulis formulir dengan cara yang tidak memerlukan JavaScript , cukup formulir HTML lama dan kirim tombol.
Karena URL tindakan didefinisikan dalam tag Formulir dan bukan di setiap tombol kirim individual, satu-satunya pilihan kami adalah memposting ke URL umum dan kemudian mulai "jika ... lalu ... lain" untuk menentukan nama tombol yang telah diajukan. Tidak terlalu elegan, tetapi satu-satunya pilihan kami, karena kami tidak ingin bergantung pada JavaScript.
Satu-satunya masalah adalah bahwa menekan "Hapus", akan menyerahkan SEMUA bidang formulir di server meskipun satu-satunya hal yang diperlukan untuk tindakan ini adalah input tersembunyi dengan post-id. Bukan masalah besar dalam contoh kecil ini, tetapi saya memiliki formulir dengan ratusan (sehingga untuk berbicara) bidang dan tab di aplikasi LOB saya yang (karena persyaratan) harus menyerahkan semuanya dalam sekali jalan dan dalam hal apapun ini tampaknya sangat tidak efisien dan sia-sia. Jika form nesting didukung, setidaknya saya dapat membungkus tombol "Delete" di dalam form itu sendiri dengan hanya kolom post-id.
Anda dapat mengatakan "Cukup terapkan" Hapus "sebagai tautan alih-alih mengirim". Ini akan salah dalam banyak tingkatan, tetapi yang paling penting karena tindakan efek samping seperti "Hapus" di sini, seharusnya tidak pernah menjadi permintaan GET.
Jadi pertanyaan saya (terutama bagi mereka yang mengatakan mereka tidak perlu bersarang) adalah apa yang ANDA lakukan? Apakah ada solusi elegan yang saya lewatkan atau intinya adalah "Membutuhkan JavaScript atau mengirimkan semuanya"?