强制提交必填字段未填写的表格

Force submission of a form with an unfilled required field?

本文关键字:表格 字段 提交      更新时间:2023-09-26

这个问题的标题也可能是:"使用javascript设置所需字段?"

<form class="theform" action="#" method="post" name="theform">
    <label for="tname">Team Name:</label>
    <input type="text" placeholder="Bears" required /><br>
    <label for="captain">Captain:</label>
    <input type="text" placeholder="Captain's Name" required /><br>
    <button type="submit" value="Submit" onclick="toggleReq()" >Submit</button>
</form>

这是我表单的高度简化版本。我知道这可能看起来很奇怪,但我希望表单提交时"Captain"字段为空,并设置为required

我在想,当单击提交按钮时,让javascript删除required属性,从而删除onclick="toggleReq()",这可能是可能的。


既然每个人都想知道为什么这会有用,我将解释:这个概念是在不久前引入的,垃圾邮件发送者可以通过包含一个额外的表单字段来挫败,用户被指示将其留空。(理想情况下,该字段将被隐藏;真正的用户不需要知道它的存在。)很明显,哪些评论来自垃圾邮件机器人,因为垃圾邮件机器人会自动填充虚拟字段。

我正在设法解决这种方法的几个弱点。垃圾邮件机器人可能会忽略一个非必填字段。然而,简单地设置所需的伪字段将阻止真实用户提交表单。因此,捕捉机器人的最佳选择是输入字段required,但忽略所需的标记。从技术上讲,忽略是不可能的,但关闭required属性是可行的。

如果您识别了captain的名称字段,这很容易。假设id为"队长":

function toggleReg(){
   $("#captain").removeAttr('required');
}

或者非jQuery版本:

function toggleReq() {
   document.getElementById("captain").removeAttribute("required");
}

当然,如果你想要一个真正的"切换",你需要先读取当前状态。