JavaScript表单验证仍在“错误”

时间:2015-07-01 18:32:21

标签: javascript php html forms

如上所述的问题。由于公司政策,我使用旧浏览器(IE8和FF8)。我无法解决这个问题,但我的研究表明这不是问题...(是的,是的)

我在Apache 2.4.9上使用PHP 5.5.12和MySQL(5.6.17)后端。该网站是一个CMS,已经有几年有机发展。

我有一个添加,更新和删除帐户的用户管理页面。但是,无论我做了什么,表格都会提交。最糟糕的例子是如果管理员选择删除一个帐户,当被问到“你真的想要删除吗?”时并取消,它仍然被删除!我已经复制了我的JavaScript和以下PHP / HTML的摘录。

我尝试对JavaScript进行一些更改,例如在设置window.event.returnValue后返回,但我总是得到相同的结果。我已经读了好几天了,一直空白!我试过onSubmit而不是onClick,但它确实不适合网站,除了它也没有用。

我开始认为浏览器的时代就是问题。我在家用开发盒上用Safari运行这个很好。任何帮助将不胜感激。

的JavaScript

<script language="JavaScript">
function frmVerify(check, loginid, login) {
   if (check == 'add') {
      Uname=add_user.login_name.value;
      Pass1=add_user.password.value;
      Pass2=add_user.password2.value;
      if(Uname=='') {
          alert('A user name must be assigned to an account.');
          window.event.returnValue=false;
      }

      if(Uname == login) {
          alert('You cannot create an account with your own username (' + login + ')');
          window.event.returnValue=false;
      }

      if(Pass1 != Pass2) {
          alert('Entered passwords are not the same!  Make sure the password and verification fields match.');
          window.event.returnValue=false;
      }

      if(Pass == '') {
          alert('Assigning a password is required when creating an account!');
          window.even.returnValue=false;
      }
   } else if(check == 'update') {
      Uname=eval('edU_'+loginid+'.login_name.value');
      Pass1=eval('edU_'+loginid+'.password.value');
      Pass2=eval('edU_'+loginid+'.password2.value');
      if(Uname == '') {
          alert('A user name must be assigned to an account.');
          window.event.returnValue=false;
      }

      if(Pass1 != Pass2) {
          alert('Entered passwords do not match!  Make sure the passowrd and verification fields match.');
          window.event.returnValue=false;
      }
   } else if(check == 'del') {
      Uname=eval('edU_'+loginid+'.login_name.value');
      if(Uname == '') {
          request = 'Do you really wish to DELETE this user account?';
      } else {
          request = 'Do you really wish to DELETE user: ' + Uname + '?';
      }

      var answer = confirm(request);
      if(answer) {
         window.event.returnValue=true;
      } else {
         window.event.returnValu=false;
      }
   }
}
</script>

在我有的PHP / HTML中

echo "<form name=\"delU_$login_id\" id=\"delU_$login_id\" mehtod=\"POST\">";
echo "<input type=\"image\" src=\"./images/delete.png\" value=\"Delete\" onClick=\"return frmVerify('del', '$login_id', '$username');\">";
echo "</form>";

1 个答案:

答案 0 :(得分:3)

window.event.returnValue(无论如何你总是没有正确拼写)是非标准的,不应该使用。

您使用的是20世纪90年代风格的内在事件属性,而不是addEventListener,所以只需:

return false;

如果您是using addEventListener,那么您会:

event_object.preventDefault();

其中event_object是事件处理函数的第一个参数。