绕过表单验证
Bypass Form Validation
我有一个带有单选按钮组的表单,我为其设置了验证逻辑,即在提交时必须 select 编辑组中的一个单选按钮。
但是我在该表单上也有一个取消按钮,我将其包装为超链接,如下所示:
<a href="@routes.MyController.index">
<button>Cancel</button>
</a>
问题是,当用户在没有单选按钮被 selected 时点击这个取消按钮(因为他们出于某种原因想要离开表单),验证逻辑开始提示用户select 单选按钮选项。
单击取消按钮时如何绕过验证?
将button
改为div
:
<a href="@routes.MyController.index">
<div>Cancel</div>
</a>
默认的 type
属性是 submit
,所以它将表单发送到服务器并验证它。在您的情况下,具有默认 submit
属性的 button
会捕获点击事件,因此 a
甚至不会点击。
如果您需要 button
标签,那么您需要使用 javascript 覆盖它的行为,例如:
<button type="button" onclick="window.location.href='@routes.MyController.index'">Cancel</button>
P.S。
这与 playframework 无关,它只是一个 HTML 行为。
我有一个带有单选按钮组的表单,我为其设置了验证逻辑,即在提交时必须 select 编辑组中的一个单选按钮。
但是我在该表单上也有一个取消按钮,我将其包装为超链接,如下所示:
<a href="@routes.MyController.index">
<button>Cancel</button>
</a>
问题是,当用户在没有单选按钮被 selected 时点击这个取消按钮(因为他们出于某种原因想要离开表单),验证逻辑开始提示用户select 单选按钮选项。
单击取消按钮时如何绕过验证?
将button
改为div
:
<a href="@routes.MyController.index">
<div>Cancel</div>
</a>
默认的 type
属性是 submit
,所以它将表单发送到服务器并验证它。在您的情况下,具有默认 submit
属性的 button
会捕获点击事件,因此 a
甚至不会点击。
如果您需要 button
标签,那么您需要使用 javascript 覆盖它的行为,例如:
<button type="button" onclick="window.location.href='@routes.MyController.index'">Cancel</button>
P.S。
这与 playframework 无关,它只是一个 HTML 行为。