1

我正在尝试为表单设置密码。我基本上希望有人在密码字段中输入密码并点击提交,如果密码正确,它会将他们重定向到同一窗口中的 buybutton.php。如果密码不正确,则会弹出一个 javascript 警报,提示“密码错误”。我试图写出 Javascript,但单击按钮时没有任何操作发生。我在下面的代码中做错了什么?谢谢您的帮助!

<!DOCTYPE html>
<body width="950" height="300" style="background-image:url('giftcard_bg.jpg');">
<head>
<SCRIPT LANGUAGE="JavaScript">
    function goForit() {
      var passwd;
      passwd = this.document.giftForm.pass.value;
      if(passwd=="samsamsam"){
      window.open ('buybutton.php','_self',false)
      }
      else{
      alert('Password wrong');
      }
    }
</SCRIPT>
</head>


<div style="position:absolute; top:150px; left:285px; text-align:center;">
    <form id="giftForm">        
        <input type="password" id="pass" placeholder="Enter Secret Code" style="font-size:150%;"/>
        <br />
        <input type="button" onClick="goForit()" value="Submit" style="font-size:150%; margin-top:15px;" />                 
     </form>
</div>

</body>
</html>
4

4 回答 4

3

你应该使用document.getElementById('pass').value而不是this.document.giftForm.pass.value

function goForit() {
  var passwd;
  passwd = document.getElementById('pass').value;
  if(passwd=="samsamsam"){
  window.open ('buybutton.php','_self',false)
  }
  else{
  alert('Password wrong');
  }
}

警告语:

但请注意!大家可以看源码找到密码!!!

取而代之的是,您应该将表单发送到服务器,并在服务器端检查它是否正确。如果正确,将用户重定向到buybutton.php,但向他发送一个cookie,授权他进入该页面。那个页面应该检查他是否有那个cookie。

但我不是专家,如果你愿意,你应该提出另一个问题。

于 2012-08-16T17:25:07.313 回答
1
passwd = this.document.giftForm.pass.value; 

导致错误尝试

passwd = document.getElementById('pass').value;

;在 window.open 之后你也错过了('buybutton.php','_self',false)

于 2012-08-16T17:31:41.127 回答
0

这应该工作

function goForit() {
      var passwd = document.getElementById("pass").value;
      if(passwd=="samsamsam"){
      window.open ('buybutton.php','_self',false)
      }
      else{
      alert('Password wrong');
      }
    }
于 2012-08-16T17:27:45.717 回答
0

Oriol 和 Rajeev 的回答是正确的。

或者,您可以这样做:

改变

passwd = this.document.giftForm.pass.value;

passwd = document.forms['giftForm'].pass.value;
于 2012-08-16T17:30:09.037 回答