表格上真的需要采取行动吗?

Ale*_*lex 35 html forms html5 html-validation

这里说它是必需的

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

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

ani*_*son 47

要求仅限于标准.完全可以在页面上做任何你想做的事情,而不是遵循标准.如果你这样做,事情可能无法显示或正常工作,但很可能会.我们的目标是遵循它们,我们的想法是,如果您遵循它们,您的页面将始终有效; 你不必担心任何事情.

是的,表单需要在HTML4中具有action属性.如果未设置,浏览器可能会使用与向其提供空字符串相同的方法.你真的应该设置action=""哪个是完全有效的HTML4,遵循标准,并获得相同的确切结果.

在HTML5中,您实际上可以在提交按钮本身上指定操作.如果没有,则使用表单的操作,如果未设置,则默认为空字符串(请注意,您无法在HTML5中将操作显式设置为空字符串).

  • @instead根据[当前HTML5规范](http://www.w3.org/TR/html5/forms.html#attr-fs-action):*"`action`和`formaction`内容属性,如果指定的,必须具有可能由空格包围的有效**非空**URL的值."* (13认同)
  • 另外请注意,如果您选择省略action属性,我很确定它默认提交到同一页面. (3认同)

Rei*_*ica 14

看起来HTML4规范需要它.我怀疑一些浏览器会做你想要"让事情变得更容易"的东西.我不建议依赖它.由于您处于未定义的行为,浏览器可以合理地决定在表单提交时不执行任何操作action.

您可以在遵循规范的情况下通过将操作留空来获得所需的行为(因为它是相对的,空白表示当前页面):

<form action="" ...>
Run Code Online (Sandbox Code Playgroud)

正如bazmegakapa所述,HTML5规范似乎不需要以下action属性:

动作和格式化内容属性(如果已指定)必须具有可能由空格包围的有效非空URL的值.[强调添加]

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

  • 该问题带有HTML5标记,此答案涉及HTML4。 (2认同)
  • @bažmegakapa不要对所有答案进行投票,而是通过HTML5规范的链接发布您自己的答案会更有用.我同意swannee的观点,即整个"downvote every answer"而不仅仅是留下评论(或编辑建议)都是不好的形式.我们的答案都是正确的,只是没有你想要的具体(我们都非常愿意用更多的信息来改进我们的答案). (2认同)

swa*_*nee 5

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

编辑:由于它已经向我指出,这个问题被标记为HTML 5: 在HTML 5,他们列为不再需要的action属性: http://www.w3schools.com/html5/att_form_action.asp这是在符合HTML 5规范.

  • 没有什么叫w3schools HTML规范.w3schools与w3c无关,HTML规范由w3c发布和维护.w3schools根本不是官方的,它只是一个包含大量半技术信息和良好SEO的网站.通过做OP的要求肯定不会违反HTML5规范(问题所要求的).你总是攻击试图纠正你的人吗?我发现你的行为并不专业. (3认同)
  • 对不起,只是认为这是一种糟糕的SO形式,因为在问题中没有明确说明的一些技术性,可以将合理的答案添加到对话中.此外,它也很重要,因为虽然它违反了HTML 4规范,但它实际上适用于支持HTML 4的所有主流浏览器. (2认同)