1

スクリプトが乱数を生成し、ユーザーがフォームを検証するためにテキストフィールドに入力する必要がある、非常に基本的なスパム対策機能を作成しようとしています。私の問題は、生成された数値の値を取得して、入力と照合することです。乱数を生成する方法は次のとおりです。

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 に何も入れていないことに気付きました (少なくとも、それは取り決めのようです)。では、フォームが送信されたときにその数値を取得して比較するにはどうすればよいでしょうか? クッキーを使おうと思ったのですが、ちょっと怖い…。

ありがとうございました!

4

2 に答える 2

2

生成された番号にクライアント側からアクセスできるようになると、目的が失われると思います。サーバー側で乱数を生成し、フォーム送信後に検証する方がよいでしょう。

于 2013-03-19T05:03:56.263 に答える
1

おそらく parseInt を使用して、innerHTML をもう一度使用するだけです。

var correct=parseInt(document.getElementById("number").innerHTML);
于 2013-03-19T05:03:25.460 に答える