你如何克服HTML表单嵌套限制?

你如何克服HTML表单嵌套限制?

我知道XHTML不支持嵌套的表单标签,我已经在Stack Overflow上阅读了关于这个主题的其他答案,但我仍然没有想出一个优雅的问题解决方案。

有人说你不需要它,他们想不到这种情况是需要的。嗯,我个人不认为我一个场景都没有必要了。

让我们看一个非常简单的例子:

您正在创建一个博客应用程序,并且您有一个表单,其中包含一些字段,用于创建新帖子和工具栏,其中包含“保存”,“删除”,“取消”等“操作”。

<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>

我们的目标是以不需要JavaScript的方式编写表单,只需要简单的旧HTML表单和提交按钮。

由于操作URL是在Form标签中定义的,而不是在每个单独的提交按钮中定义,因此我们唯一的选择是发布到通用URL,然后启动“if ... then ... else”以确定按钮的名称提交。不是很优雅,但是我们唯一的选择,因为我们不想依赖JavaScript。

唯一的问题是,按“删除”,将提交服务器上的所有表单字段,即使此操作所需的唯一内容是带有post-id的隐藏输入。在这个小例子中没什么大不了的,但是我的LOB应用程序中有数百个(可以这么说)字段和标签的表单(由于要求)必须一次性提交所有内容,无论如何这看起来效率很低而浪费。如果支持表单嵌套,我至少可以在其自己的表单中包含“删除”提交按钮,只包含post-id字段。

您可以说“只需实施”删除“作为链接而不是提交”。这在许多层面都是错误的,但最重要的是因为像这里的“删除”这样的副作用动作永远不应该是GET请求。

所以我的问题(特别是那些说他们不需要形式嵌套的人)是你做什么的?是否有任何优雅的解决方案,我缺少或底线真的“需要JavaScript或提交一切”?


喵喔喔
浏览 546回答 3
3回答

白衣染霜花

你可以在页面上并排显示表单,但不能嵌套。然后使用CSS使所有按钮排列漂亮?<form&nbsp;method="post"&nbsp;action="delete_processing_page"> &nbsp;&nbsp;&nbsp;<input&nbsp;type="hidden"&nbsp;name="id"&nbsp;value="foo"&nbsp;/> &nbsp;&nbsp;&nbsp;<input&nbsp;type="submit"&nbsp;value="delete"&nbsp;class="css_makes_me_pretty"&nbsp;/></form><form&nbsp;method="post"&nbsp;action="add_edit_processing_page"> &nbsp;&nbsp;&nbsp;<input&nbsp;type="text"&nbsp;name="foo1"&nbsp;&nbsp;/> &nbsp;&nbsp;&nbsp;<input&nbsp;type="text"&nbsp;name="foo2"&nbsp;&nbsp;/> &nbsp;&nbsp;&nbsp;<input&nbsp;type="text"&nbsp;name="foo3"&nbsp;&nbsp;/> &nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;&nbsp;<input&nbsp;type="submit"&nbsp;value="post/edit"&nbsp;class="css_makes_me_pretty"&nbsp;/></form>
打开App,查看更多内容
随时随地看视频慕课网APP