【问题标题】:JavaScript to match random number and text inputJavaScript 匹配随机数和文本输入
【发布时间】:2013-03-07 15:58:09
【问题描述】:

我正在尝试制作一个非常基本的反垃圾邮件功能,其中脚本生成一个随机数,然后用户必须在文本字段中键入它才能验证表单。我的问题是获取生成的数字的值以将其与输入相匹配。这是我生成随机数的方法:

window.onload=function randomNumberGenerator()
  {
    var x=document.getElementById("number");
    var randomNumber=Math.floor((Math.random()*100)+1);
    x.innerHTML=randomNumber;
            }

我试图像这样在验证时获取号码:

var x=document.forms["contactForm"]["realPerson"].value;
var correct=document.getElementById("number").value;

if (x != correct)
  {
  alert("Please write in the correct number");
  return false;
  }

但过了一会儿,我意识到 innerHTML 并没有在 DOM 中放置任何可以读取的内容(至少这似乎是交易)。那么如何在提交表单时检索该数字以进行比较呢?我曾考虑过使用 cookie,但这似乎有点吓人......

谢谢!

【问题讨论】:

  • 请显示 html。什么类型的字段是“数字”。将 var correct=document.getElementById("number").innerHTML;适合你??
  • 为什么不使用reCAPTCHA?懒惰的程序员是最好的程序员:codinghorror.com/blog/2005/08/…
  • @user2073143 - HTML 在哪里?请把它放在你的问题中。
  • 只是我的工作空间非常有限。

标签: javascript forms validation random innerhtml


【解决方案1】:

如果您可以从客户端访问生成的号码,我认为您失去了目的。最好在服务端生成随机数,提交表单后验证。

【讨论】:

  • 我同意。不幸的是,我无权访问提交服务器。此表格用于 CRM!但是你给了我一个想法:我可以用 php 生成随机数并回显出来,然后用 javascript 抓取它。
  • 另外,为了更好的保护,将生成的号码留在服务器端并检查那里的输入。
【解决方案2】:

您将只使用第二次 innerHTML,也许使用 parseInt

var correct=parseInt(document.getElementById("number").innerHTML);

【讨论】:

  • 不应该真的有所作为,因为 OP 没有使用严格的不等式来比较 xcorrect,而是 +1 来指出它。
  • @user2073143 - 如果您想将 html 放在评论中,请用 ` 标记将其括起来。
  • 谢谢特拉维斯。做到了。不幸的是,我没有给你投票的声誉......
  • @user2073143 - 你总是可以接受这个答案是正确的:D
猜你喜欢
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
  • 1970-01-01
  • 2013-03-26
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多