这里说它是必需的
http://www.w3schools.com/tags/att_form_action.asp
但是我发现即使我没有指定一个动作属性,表单也会被提交,并且表单会被提交到当前页面,这正是我想要的。
答案 0 :(得分:46)
要求仅限于标准。完全有可能在页面上做任何你想做的事情,而不是遵循标准。如果你这样做,事情可能无法显示或正常工作,但很可能会。我们的目标是遵循它们,我们的想法是,如果您关注它们,您的网页将始终工作;你不必担心任何事情。
是的,表单必需才能在HTML4中拥有操作属性。如果未设置,浏览器可能会使用与向其提供空字符串相同的方法。你真的应该设置action=""
这是完全有效的HTML4,遵循标准,并获得相同的结果。
在HTML5中,您实际上可以在提交按钮本身上指定一个操作。如果没有,则使用表单的操作,如果未设置,则默认为空字符串(请注意,您无法在HTML5中将操作显式设置为空字符串。)
答案 1 :(得分:13)
看起来像the HTML4 spec requires it。我怀疑一些浏览器会做你想要“让事情变得更容易”的东西。我不建议依赖它。由于您处于未定义的行为,因此当提交的表单没有action
时,浏览器可以合理地决定不执行任何操作。
您可以在遵循规范时获得所需的行为,方法是将操作留空(因为它是相对的,空白表示当前页面):
<form action="" ...>
正如bazmegakapa所述,HTML5规范doesn't seem to require the action
attribute:
动作和形式内容属性,如果指定,必须具有可能被空格包围的有效非空URL的值。[强调添加]
有趣的是,这意味着在HTML5中,<form action="">
无效,但不清楚是否需要没有操作的表单(提交到当前页面)。
答案 2 :(得分:5)
从技术上讲,它违反了HTML 4规范,但如果未指定任何操作,则所有浏览器都会回发给响应的发起者。我同意依靠它并不是一个聪明的主意,但确实有效。
编辑:正如我已经指出这个问题被标记为HTML 5: 在HTML 5中,他们列出了不再需要的操作属性:http://www.w3schools.com/html5/att_form_action.asp符合HTML 5规范。
答案 3 :(得分:1)
//线程复活警报
扩展动漫界的答案...
如果已评估完所有按钮formaction
和表单action
的属性,如果“操作”仍评估为“空字符串”,则来自HTML5.2规范部分4.10.21.3第8点指出:
如果action为空字符串,则让action为文档的URL 表单文件。
在提交表单时,这就是您想要的。