请考虑HTML5文档中的以下表单:
<form method="post" action="http://example.com/submit/">
<button name="confirm" value="1" type="submit">Confirm</button>
<button name="re-send" value="1" type="submit">Re-send code</button>
<button name="cancel" value="1" type="submit">Cancel change</button>
</form>
Run Code Online (Sandbox Code Playgroud)
使用Chrome,单击第一个按钮可生成请求的有效负载confirm=1.类似地,第二个按钮导致re-send=1第三个按钮cancel=1.
检查请求有效负载服务器端允许我确定单击三个按钮中的哪一个(假设请求有效负载中只有三个密钥中的一个).
在所有情况下,未单击的按钮的键:值对将从请求有效内容中排除.这非常有用.
此行为(未单击的按钮键:值对是否从请求有效负载中排除)标准?
据我所知,是的。
来自 HTML4 规范: http://www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#h-17.13.2
每个成功的控件都有其控件名称与其当前值配对,作为提交的表单数据集的一部分。...如果一张表单包含多个提交按钮,则只有激活的提交按钮才成功。
来自 HTML5 规范: http://www.w3.org/TR/2012/CR-html5-20121217/forms.html#the-button-element
注意:仅当按钮本身用于启动表单提交时,按钮(及其值)才会包含在表单提交中。
我很确定 < IE8 将提交元素内容而不是值(例如,confirm=Confirm),但大多数其他常见浏览器应该可以正常工作。
或许可以考虑:
<form method="post" action="http://example.com/submit/">
<button name="submit-action" value="confirm" type="submit">Confirm</button>
<button name="submit-action" value="re-send code" type="submit">Re-send code</button>
<button name="submit-action" value="cancel change" type="submit">Cancel change</button>
</form>
Run Code Online (Sandbox Code Playgroud)
另外,值得注意的是,一些较旧的浏览器可能会出现这样的情况:它们可能会将其视为没有单击任何按钮(例如,由 javascript 提交的表单或输入按钮)。通过默认“确认”可能值得满足这一点。不过,现代浏览器上的 HTML5 不应给您带来任何悲伤。
| 归档时间: |
|
| 查看次数: |
3203 次 |
| 最近记录: |