首页 > 解决方案 > JavaScript 输入字段必须等于隐藏在 JavaScript 代码中的数字

问题描述

在我的联系我们表格中,我被机器人疯狂地发送垃圾邮件。我试过了,随机的安全码,码必须和你看到的码一致。他们绕过它。我回到谷歌recaptcha,他们正在绕过它。所以我唯一的另一个想法是创建一个他们必须回答问题的输入字段,并且数字将隐藏在 JS 脚本中。如果数字正确,他们将能够提交表格,如果不正确,他们将无法提交。问题是,JS 不是我的强项。有人可以帮我创建一种让JS检查输入字段是否等于10的方法吗?先感谢您。

<script language='javascript' type='text/javascript'>
    function check(input) {
        if (squest !== 10) {
            input.setCustomValidity('Answer is incorrect.');
        } else {
            // input is valid -- reset the error message
            input.setCustomValidity('');
        }
    }
</script>
<input name="squest" required="required" type="text" id="squest" oninput="check(this)" />

<input type="submit" value="Submit" class="viewbtn" id="btn" name="submit">

标签: javascriptvalidation

解决方案


squest指的是元素id="squest"本身,你应该从中获取value

非身份/严格不等式 (!==)

如果操作数不相等和/或类型不同,则非等运算符返回true 。

当您使用非身份/严格不等式 (!==)运算符时,您应该将值转换为数字。

您也可以使用传递的参数从元素中获取值:

if (Number(input.value) !== 10) {

<script language='javascript' type='text/javascript'>
  function check(input) {
    if (Number(input.value) !== 10) {
      input.setCustomValidity('Answer is incorrect.');
    } else {
      // input is valid -- reset the error message
      input.setCustomValidity('');
    }
  }
</script>

<form>
  <input name="squest" required="required" type="text" id="squest" oninput="check(this)" />
  <input type="submit" value="Submit" class="viewbtn" id="btn" name="submit">
</form>


推荐阅读