onsubmit =“function()”不起作用

时间:2015-06-08 13:05:02

标签: javascript jquery onsubmit

我想在django中验证表单的动态添加字段(存在于templates / appname中)。我在javascript的帮助下添加了这些字段( addInput.js - 存储在脚本标记中作为源提到的地方),它还具有删除这些字段的逻辑以及验证这些字段值。但是当我点击send_invites按钮时,当我第一次希望它应该转到validateEmail()函数时,如果一切正常然后,它会再次指示我进入应用/注册状态它应该重定向到app / register。

    var counter = 1;
    var limit = 5;

    function addInput(divName) {

      if (counter == limit) {

        alert("You have reached the limit of adding " + counter + " Email Addresses");

      } else {

        var newdiv = document.createElement('div');
        newdiv.innerHTML = "<p id = 'remove" + counter + "'>Email Address " + (counter + 1) + " : " + "<input type = 'text' name ='myInputs[]'></p>";
        document.getElementById(divName).appendChild(newdiv);
        counter++;
        alert(counter + "add");
      }
    }

    function removeInput(divName) {

      if (counter == 1) {

        alert("You have reached the limit of removing Email Addresses");

      } else {
        counter--;
        var olddiv = document.getElementById("remove" + counter);
        alert(counter + "remove");
        olddiv.parentNode.removeChild(olddiv);

      }
    }

    function validateEmail(divName) {

      var emailFilter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-]+.)+([a-zA-Z0-9]{2,4})+$/;

      console.log("cmn");
      alert("cmn");
      for (i = 0; i < counter; i++) {

        var email = $("#remove" + i).val();

        alert(email);
        //      return true;

      }
      return true;

    }
<div id="page-wrapper">
  <div class="row">
    <div class="col-lg-12">
      <br>

      <h1 class="page-header">
        Send Invites
        </h1>

      <form method="POST" onsubmit="return validateEmail('dynamicInput')" action="/app/register/">
        <div id="dynamicInput">
          <p id='remove0'>Email Address 1 :
            <input type="text" name="myInputs[]">
          </p>

        </div>
        <br>
        <br>
        <input type="button" value="Add another Email Address" onClick="addInput('dynamicInput');">
        <input type="button" value="Remove Email Address Field " onClick="removeInput('dynamicInput');">

        <br>
        <br>
        <input type="submit" value="Send Invites">
        <input type='hidden' name='csrfmiddlewaretoken' value='xyz' />
      </form>

      <!-- /.col-lg-12 -->
    </div>
    <!-- /.row -->
  </div>
  <!-- /#page-wrapper -->
</div>
<!-- /#wrapper -->
</div>
<style>
  a.active {
    background-color: #eee;
  }
</style>

但为什么这不会发生?其他两个javascript函数addInput和removeInput工作正常。只有validateEmail没有被调用,我甚至调用了alert和console.log,但没有显示任何内容。请帮忙。我是javascript的新手。

1 个答案:

答案 0 :(得分:0)

运行代码,单击按钮,控制台中出现以下错误。

  

Uncaught SyntaxError:无效的正则表达式:   /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-]+.)+([a-zA-Z0-9]{2,4})+ $ /:   未终止的小组

查看代码,你有额外的(

/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-]+.)+([a-zA-Z0-9]{2,4})+$/;
                    ^

所以你要么错过了结束),要么你有额外的(。我猜您在)之前错过了+。看看你在哪里找到了reg exp,看看它应该是什么。