XHTML'nin iç içe form etiketlerini desteklemediğini biliyorum ve burada bu konuda Stack Overflow ile ilgili diğer cevapları zaten okudum, ancak yine de soruna zarif bir çözüm bulamadım.
Bazıları buna ihtiyacınız olmadığını ve bunun gerekli olacağını bir senaryo düşünemediklerini söylüyor. Şahsen buna ihtiyaç duymadığım bir senaryo düşünemiyorum .
Çok basit bir örnek görelim:
Bir blog uygulaması yapıyorsunuz ve yeni bir gönderi oluşturmak için bazı alanları ve "Kaydet", "Sil", "İptal" gibi "eylemleri" olan bir araç çubuğunu içeren bir formunuz var.
<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>
Amacımız, formu JavaScript gerektirmeyen bir şekilde yazmak , sadece eski HTML formunu ve düğmelerini göndermek.
Eylem URL'si Form etiketinde tanımlandığından ve her bir gönderme düğmesinde değil, tek seçeneğimiz genel bir URL'ye posta göndermek ve ardından düğmenin adını belirlemek için "if ... then ... else" komutunu başlatmaktır. gönderildi. Çok zarif değil, ama tek seçeneğimiz, çünkü JavaScript'e güvenmek istemiyoruz.
Tek sorun, bu eylem için gereken tek şey post-id ile bir Gizli girdi olmasına rağmen, "Sil" tuşuna basıldığında TÜM form alanlarını sunucuda göndermesidir. Bu küçük örnekte çok önemli değil, ancak LOB uygulamalarımda yüzlerce (tabiri caizse) alan ve sekme içeren formlar var (gereksinimler nedeniyle) her şeyi tek seferde göndermek zorunda ve her durumda bu çok verimsiz görünüyor ve bir israf. Form yerleştirme destekleniyorsa, en azından kendi formunun içindeki "Sil" gönderme düğmesini yalnızca post-id alanıyla sarabilirim.
"Gönder yerine" Sil "bağlantısını bir bağlantı olarak uygulayın" diyebilirsiniz. Bu pek çok düzeyde yanlış olur, ama en önemlisi burada "Sil" gibi yan etki eylemleri asla bir GET isteği olmamalıdır.
Yani sorum (özellikle yuva yerleştirmeye ihtiyaç duymadıklarını söyleyenler için) SİZ ne yapıyorsunuz? Eksik olduğum herhangi bir zarif çözüm var mı ya da sonuçta gerçekten "JavaScript ister ya da her şeyi gönderin" mi?