这里说它是必需的
http://www.w3schools.com/tags/att_form_action.asp
但是我看到即使我没有指定操作属性,表单也会被提交,并且表单会被提交到当前页面,这正是我想要的。
这里说它是必需的
http://www.w3schools.com/tags/att_form_action.asp
但是我看到即使我没有指定操作属性,表单也会被提交,并且表单会被提交到当前页面,这正是我想要的。
The requirement is only by standards. It is perfectly possible to do whatever you want on a page and not follow standards. Things may not display or work correctly if you do that, but likely they will. The goal is to follow them, and the idea is that if you follow them, your page will always work; you don't have to worry about anything.
Yes, the form is required to have an action attribute in HTML4. If it's not set, the browser will likely use the same method as providing an empty string to it. You really should set action=""
which is perfectly valid HTML4, follows standards, and achieves the same exact result.
In HTML5, you can actually specify an action on the submit button itself. If there isn't one, it uses the form's action and if that is not set, it defaults to the empty string (note you cannot explicitly set the action to an empty string in HTML5).
看起来HTML4 规范需要它。我怀疑有些浏览器会做你想做的事情来“让事情变得更容易”。我不建议依赖它。由于您处于未定义的行为,浏览器可以合理地决定在提交表单时不执行任何操作 no action
。
您可以通过将操作留空来获得您想要的行为,同时遵循规范(因为它是相对的,空白表示当前页面):
<form action="" ...>
正如 bazmegakapa 所提到的,HTML5 规范似乎不需要该action
属性:
action 和 formaction 内容属性(如果指定)必须具有一个有效的非空 URL 值,该 URL 可能被空格包围。[强调添加]
有趣的是,这意味着在 HTML5<form action="">
中无效,但不清楚是否需要没有操作的表单才能工作(提交到当前页面)。
从技术上讲,这违反了 HTML 4 规范,但如果未指定任何操作,所有浏览器都会回发给响应的发起者。我同意依赖它不是一个聪明的主意,但它确实有效。
编辑:正如有人向我指出的那样,这个问题被标记为 HTML 5: 在 HTML 5 中,他们列出了不再需要的操作属性:http: //www.w3schools.com/html5/att_form_action.asp位于符合 HTML 5 规范。
// 线程复活警报
为了扩展animuson的回答......
如果在评估了所有按钮formaction
和表单action
属性之后,如果“操作”仍然评估为“空字符串”,则 HTML5.2 规范第4.10.21.3节第8 点指出:
如果 action 是空字符串,让 action 是表单文档的文档 URL。
在提交表单时,这就是您想要的。