【问题标题】:Redirect users when validation fails验证失败时重定向用户
【发布时间】:2016-04-27 05:48:20
【问题描述】:

我在使用 JS 验证表单时遇到了一些问题。

这是 HTML,

<form action="xyz.php" method="post">
  <div class="form-group">
    <label class="sr-only" for="id1">Enter ID</label>
    <input type="text" class="form-control" name="id1" id="id1">
  </div>
  <button onclick="validateID()" type="submit" name="submit" class="btn">Submit</button>
</form>

这是JS,

<script>
  function validateID() {
    var id = document.getElementById("id1").value;
    var reg1 = new RegExp("^([0-9][0-9][0-9])$");

    if (!(reg1.test(id))) {
      document.location.href= "http://www.errorpage.com";
    }
  }
</script>

它应该根据正则表达式检查提交的表单值,如果验证失败,它必须重定向到错误页面。

但是,它不会重定向。当我用 alert() 代替 document.location.href= "http://www.errorpage.com"; 时,它可以工作。

感谢您的帮助。

【问题讨论】:

  • 你可以试试window.location.href
  • 我认为这与 location.href 无关。这是因为按钮类型是提交并且表单执行默认操作并将表单提交到 xyz.php。这就是为什么当他发出警报时。有用。请参考我下面的回答
  • 所以需要返回0;在 location.href 之后?

标签: javascript php


【解决方案1】:

我认为这与 location.href 无关。这是因为按钮类型是提交并且表单执行默认操作并将表单提交到 xyz.php。这就是为什么当他把警报()。它有效

改变

&lt;button onclick="validateID()" type="submit" name="submit" class="btn"&gt;Submit&lt;/button&gt;

键入按钮

&lt;button onclick="validateID()" type="button" name="submit" class="btn"&gt;Submit&lt;/button&gt;

在表单标签中使用 onsubmit="validateID()" 并从按钮中删除点击事件

【讨论】:

    【解决方案2】:

    试试 window.location.hreflocation.href

    详细原因:What is the difference between document.location.href and document.location?

    【讨论】:

      【解决方案3】:
      <html>
      <head>
      <script>
        function validateID() {
      
          var id = document.getElementById("id1").value;
          var reg1 = new RegExp("^([0-9][0-9][0-9])$");
      
          if (!(reg1.test(id))) {
              document.location.href = "http://www.errorpage.com";
              return true;
          }else{
      
                return false;
          }
        }
      </script>
      </head>
      <body>
      <form action="xyz.php" method="post" onsubmit="event.preventDefault();  validateID();">
        <div class="form-group">
          <label class="sr-only" for="id1">Enter ID</label>
          <input type="text" class="form-control" name="id1" id="id1">
        </div>
        <button  type="submit" name="submit" class="btn">Submit</button>
      </form>
      </body>
      </html>
      

      【讨论】:

      • 只是好奇,JS不应该在&lt;form&gt;之后吗?编辑:好的,现在知道了!它是如何工作的?浏览器是否保存函数 validateID() 以便稍后单击按钮时使用?
      • 嗯,每次提交表单时,它都使用 validateID();功能。
      猜你喜欢
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 2016-04-03
      • 2013-11-05
      • 1970-01-01
      • 2018-06-13
      相关资源
      最近更新 更多