强制提交带有未填写必填字段的表单?

时间:2013-02-05 21:15:27

标签: javascript html5

这个问题也可以标题为:“使用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

我认为这可能 - 只是可能 - 通过在单击提交按钮时删除required属性 - 因此onclick="toggleReq()"


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

我想要解决的方法存在一些缺点。 spambot可能会忽略非必填字段。但是,简单地制作所需的虚拟字段会阻止表单由真实用户提交。因此,捕获机器人的最佳选择是输入字段required,但忽略该必需标记。忽略在技术上是不可能的,但关闭required属性是。

1 个答案:

答案 0 :(得分:1)

如果你找到队长的名字字段,那就很容易了。假设身份是“队长”:

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

或非jQuery版本:

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

当然,如果你想要真正的“切换”,你需要首先阅读当前状态。