表单上真的需要动作吗?

这里说它是必需的

http://www.w3schools.com/tags/att_form_action.asp

但是我发现即使我没有指定一个action属性,表单也会被提交,表单会被提交到当前页面,而这正是我想要的。

这个要求只有标准 。 完全可以在网页上做任何你想做的事情,而不是遵循标准。 事情可能无法正确显示或正常工作,但可能会这样做。 我们的目标是跟随他们,这个想法是,如果你跟着他们,你的网页将永远工作; 你不必担心任何事情。

是的,表单需要在HTML4中有一个action属性。 如果没有设置,浏览器可能会使用与提供空string相同的方法。 你真的应该设置action=""这是完全有效的HTML4,遵循标准,并达到相同的确切结果。

在HTML5中,您实际上可以在提交button本身指定一个操作。 如果没有,则使用表单的操作,如果没有设置,则默认为空string(请注意,不能在HTML5中将操作显式设置为空string)。

它看起来像HTML4规范要求 。 我怀疑一些浏览器做你想“让事情变得更容易”。 我不build议依靠它。 由于您处于未定义的行为,因此当表单提交时没有任何action ,浏览器可以合理地决定什么也不做。

您可以按照规范将行为留空(因为它是相对的,空白表示当前页面),您可以获得所需的行为:

 <form action="" ...> 

正如bazmegakapa所提到的,HTML5规范似乎并不需要action属性 :

action和formaction内容属性( 如果指定的话 )必须有一个值,这个值是一个可能被空格包围的有效非空URL。[emphasis added]

有趣的是,这意味着在HTML5中, <form action="">是无效的,但不清楚没有操作的表单是否需要工作(提交到当前页面)。

从技术上讲,这违反了HTML 4规范,但是如果没有指定任何操作,所有浏览器都会回发给响应的发起者。 我会同意依靠它不是一个聪明的主意,但它确实有效。

编辑:因为它已经指出,这个问题被标记为HTML 5:在HTML 5中,他们列出的行动属性不再需要: http : //www.w3schools.com/html5/att_form_action.asp这是根据HTML 5规范。