- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我知道 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 是在表单标签中定义的,而不是在每个单独的提交按钮中,我们唯一的选择是发布到通用 URL,然后启动“if...then...else”来确定提交的按钮。不是很优雅,但我们唯一的选择,因为我们不想依赖 JavaScript。
唯一的问题是,按下“删除”,将提交服务器上的所有表单字段,即使此操作唯一需要的是带有 post-id 的隐藏输入。在这个小例子中没什么大不了的,但我的 LOB 中有数百个(可以这么说)字段和选项卡的表单。应用程序(由于要求)必须一次性提交所有内容,无论如何这似乎非常低效和浪费。如果支持表单嵌套,我至少可以将“删除”提交按钮包装在它自己的表单中,只有 post-id 字段。
您可能会说“只需将“删除”实现为链接而不是提交”。这在很多层面上都是错误的,但最重要的是,这里的“删除”等副作用操作绝不应该是 GET 请求。
所以我的问题(特别是对于那些说他们不需要表单嵌套的人)是你做什么?有没有我遗漏的优雅解决方案,或者底线真的是“要么需要 JavaScript,要么提交所有内容”?
最佳答案
我知道这是一个老问题,但 HTML5 提供了几个新选项。
第一种是在标记中将表单与工具栏分开,为删除操作添加另一个表单,并使用form
将工具栏中的按钮与其各自的表单相关联。属性。
<form id="saveForm" action="/post/dispatch/save" method="post">
<input type="text" name="foo" /> <!-- several of those here -->
</form>
<form id="deleteForm" action="/post/dispatch/delete" method="post">
<input type="hidden" value="some_id" />
</form>
<div id="toolbar">
<input type="submit" name="save" value="Save" form="saveForm" />
<input type="submit" name="delete" value="Delete" form="deleteForm" />
<a href="/home/index">Cancel</a>
</div>
这个选项相当灵活,但原帖也提到可能需要用一个表单执行不同的操作。 HTML5 再次来拯救。您可以使用 formaction
提交按钮上的属性,因此同一表单中的不同按钮可以提交到不同的 URL。这个例子只是在表单外的工具栏上添加了一个克隆方法,但它在表单中的嵌套也是一样的。
<div id="toolbar">
<input type="submit" name="clone" value="Clone" form="saveForm"
formaction="/post/dispatch/clone" />
</div>
http://www.whatwg.org/specs/web-apps/current-work/#attributes-for-form-submission
这些新功能的优势在于它们以声明方式完成所有这些操作,而无需 JavaScript。缺点是旧版浏览器不支持它们,因此您必须为旧版浏览器做一些 polyfill。
关于html - 您如何克服 HTML 表单嵌套限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/597596/
据我所知,Marketo 将 REST API 请求的数量限制为每天 10,000 次。有没有办法克服这个限制?我可以支付并获得更多吗? 我发现 REST API 请求和 SOAP API 请求是分开
有谁知道有什么方法可以克服 NotSupportedException?我有一个针对用户的方法: public virtual bool IsAbove(User otherUser) {
我们最近从关系型 (MySQL) 转向 NoSQL (couchbase)。基本上它是社交手机游戏的后端。我们在扩展后端以处理越来越多的用户时面临着很多问题。当使用 MySQL 时,由于多个表之间存在
我当前用来收集文本的函数 InputBox 显然不能接受超过 255 个字符,并且我需要能够收集更多字符?我可以使用参数或不同的函数来增加此限制吗? 最佳答案 说句迂腐的话,输入框允许您输入最多 25
我是近似字符串匹配领域的新手。 我正在探索 Bitap algorithm 的用途,但到目前为止,它有限的模式长度让我很困扰。我正在使用 Flash,处理 32 位无符号整数和一个 IEEE-754
克服 PHP 中的大海捞针困惑的最实用方法是什么? 这里 $needle 是第一个参数 bool in_array ( mixed $needle , array $haystack [, bool
我有一个无法更改的客户端类。 List list1= Arrays.asList(1,2,3); System.out.println("Total sum is:"+sum(list1)); pri
我们都知道,在 Java 中,如果在 Abstract 类中声明一个 static 方法,该方法将属于 Abstract 类,而不是它的 child 。 (没有抽象静态) 我有一个简单的数据库系统,它
我有 4 个表和这个查询 SELECT tag.id, title FROM tag LEFT JOIN tag_map ON ( tag.id = tag_map.tag_id ) LEFT JOI
我有 4 个表和这个查询 SELECT tag.id, title FROM tag LEFT JOIN tag_map ON ( tag.id = tag_map.tag_id ) LEFT JOI
在 Swift 中,一切都以结构而不是类的形式实现。正在传入值,但内存地址不存储它们。这是一个例子: import UIKit var array = Array() array = [6,2,9,1
在我编写的 C++ 程序中: #include #include using namespace std; int main() { vector a; a.resize(1); f
我正在尝试使用 php_ldap(使用 ADLdap)从 Ubuntu(hardy 8.04LTS)主机绑定(bind)到 AD。在端口 389 上绑定(bind)到 ldap://myserver
这个问题在这里已经有了答案: Low picture/image quality when capture from camera (3 个答案) 关闭 5 年前。 我想从相机拍照并上传到服务器,但
我想将 unsigned char[8] 分配给 uint64(c 语言),使用 RPC 传递此值,并将 uint64 转换回具有相同字节顺序的 unsigned char[8](cpp 语言)。问题
Python 似乎对实例方法有一些限制。 无法复制实例方法。 不能 pickle 实例方法。 这对我来说是有问题的,因为我的工作是非常面向对象的 project我在其中引用了实例方法,并且同时使用了深
我理解这个问题,根据答案 here ,但是,我真的可以使用帮助或更详细的代码解释来说明它是如何克服的。 我的情况是这样的:我曾经将模型和 Controller 分开,在我的模型包中我有一个包含所有模型
假设我从这样的 Akka Persistence 系统开始: case class MyMessage(x: Int) class MyProcessor extends Processor {
我正在寻找在构建重量级 Windows 界面时处理用户对象句柄限制的高级策略。请说明您如何使用 SWT 或直接 Windows GUI API 克服或绕过此问题。我唯一不感兴趣的是优化小部件使用的策略
我有一个我知道过去的日期列表,但格式为 28/MAY/13 .用它们制作日期类的最接近的方法是基本的 dates as.Date("2013-12-31")] as.Date("2013-12-3
我是一名优秀的程序员,十分优秀!