douyi6168 2013-03-09 15:46
浏览 21
已采纳

为什么使用JavaScript进行表单验证不会阻止表单被发送?

i have this small javascript to check if the email is valid, i check client side, couse its not 100% important that the mail is valid, and i dont want to re-direct the user just to check.

The issue is that the popup does apear, but the users values are still inserted

  <script>
function popup()
{  

    var email = document.getElementById("email").value;
    var atpos=email.indexOf("@");
    var dotpos=email.lastIndexOf(".");

if (document.getElementById("email").value == "") {

    alert("Enter an email");
    return false;

 }
else if (atpos<1 || dotpos<atpos+2 || dotpos+2>=email.length) {

    alert("The email is not valid");
    return false;

 }
else
    window.location = "email.php";
    return true;
}
   </script>

and here is the HTML form

 <form action="email.php" accept-charset="UTF-8" class="signup_form" id="signup_form" method="post">


<input class="txt accent-color colorize_border-color required" id="email" name="email" placeholder="Indtast E-mail her" data-label-text="Email" type="email">

<input class="submit button big btn" id="submit_button" name="submit" value="Deltag nu!" onclick="return popup()"  type="submit">

</form>

if i remove "type submit" it works, but i dont get the values with $_POST on the next page, they are null.

Any way to get around this?

  • 写回答

1条回答 默认 最新

  • douzhu5900 2013-03-09 15:55
    关注

    Canonical

    window.onload=function() {
      document.getElementById(("signup_form").onsubmit=function() {
        var email = document.getElementById("email").value;
        var atpos=email.indexOf("@");
        var dotpos=email.lastIndexOf(".");
    
        if (document.getElementById("email").value == "") {
          alert("Enter an email");
          return false;
        }
        if (atpos<1 || dotpos<atpos+2 || dotpos+2>=email.length) {
          alert("The email is not valid");
          return false;
        }
        return true;
      }
     }
    

    using

    <form action="email.php" accept-charset="UTF-8" class="signup_form" id="signup_form" method="post">
      <input class="txt accent-color colorize_border-color required" id="email" name="email" placeholder="Indtast E-mail her" data-label-text="Email" type="email">
      <input class="submit button big btn" id="submit_button" name="submit" value="Deltag nu!"   type="submit">
    </form>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错