我的onsubmit =“return onNewUserRegistrationCheck(this);”仍然以FALSE提交表格

时间:2012-03-03 05:53:29

标签: javascript html forms submit

我在这个问题上阅读了几篇SO帖子,而我在可能的解释中找到的帖子是this一个。 该帖子中的回复称“如果以编程方式调用submit(),浏览器不会在表单上调用onSubmit事件。”

我不确定这是否会影响我的表格。

我的代码onsubmit =“return onNewUserRegistrationCheck(this);”是100%工作 - 对onNewUserRegistrationCheck(this)的调用是100%发生的。

这是代码:

      function onNewUserRegistrationCheck(theForm)
      {

          alert("In onNewUserRegistrationCheck()");

          if(theForm.loginname.value == "<?php echo Labels::$DEFAULTLOGINEMAILLABEL ?>" 
              || theForm.password.value == "<?php echo Labels::$DEFAULTPASSWORDLABEL ?>" )
          {  
              alert("returning false now, so -- HOPEFULLY the form doesn't submit");
              return false;
          }
     }

以下是表格:

    <form enctype="multipart/form-data" onsubmit="return onNewUserRegistrationCheck(this);"
                 class="registerFormStyles" name="registerForm" id="regform"
                 action="regTheNewUser.php" method="post">
         <input type="text" id="loginname" name="<?php  echo Labels::$USERNAMELABEL ?>"
               style="width:260px" value="<?php echo Labels::$DEFAULTLOGINEMAILLABEL ?>" />

         <input type="password" placeholder="<?php echo Labels::$DEFAULTPASSWORDLABEL ?>" 
                  id="password" name="<?php echo Labels::$PASSWORD ?>"
            style="width:220px" class="inactive" />

         <input type="hidden" name="newUserRegister" id="newUserRegisterId">

         <input type="image" name="registerButton" value="Register" class="login-button-landing" 
                    onclick="document.registerForm.submit();">
    </form>

注意我使用type =“image”并执行程序化提交()。根据一些SO帖子,结果 我正在做的程序化提交()是这样的:'如果以编程方式调用submit(),浏览器不会在表单上调用onSubmit事件

但是,当我点击我的名字=“registerButton”伪提交按钮时,我看到2个警告框:

  alert box #1 pops up and says:  "In onNewUserRegistrationCheck()"

然后...

  alert box #2 pops up and says:  "returning false now, so -- HOPEFULLY the form doesn't submit"

当我单击表单上的name =“registerButton”按钮时,会出现这两个警告框。 因此,我必须(?)误解我所读过的帖子中的含义 'calling submit()不会触发onsubmit事件'。

底线是表单仍然提交到文件“regTheNewUser.php” 即使您可以看到由于警报消息而发生'return false' 被看到“现在返回false,所以 - 希望表格不提交”

如何使用type =“submit”按钮停止提交的表单 ? 我已向自己证明我的 onsubmit =“return onNewUserRegistrationCheck(this);” 是100%被召唤。我返回false,但无论如何都会提交表单。

当找到无效的表单文本条目时,如何停止提交的表单 为什么不在STOP表格提交上面“返回错误”?

2 个答案:

答案 0 :(得分:2)

删除

的onclick = “document.registerForm.submit();”

!!!

type = image是一个提交和 document.registerForm.submit()不会触发onsubmit事件处理程序!

所以点击首先触发提交,然后事件处理程序启动,因为它是一个提交按钮,然后表单从第一个子文件发送到服务器

答案 1 :(得分:1)

在你的帖子中你使用了

  1. 输入类型=“图像” - 其行为与输入类型相同=“提交”,因此在单击图像时会触发onsubmit事件。您已从onsubmit事件处理函数返回false,并且onsubmit处理程序已在表单中注册,因此返回值将发送到表单并停止表单的提交操作。

    但您说您的表单已提交,因为

  2. 在图片中,您已经注册了以编程方式调用submit()方法的onclick事件,因此您的表单已提交。

  3. 为了阻止您的表单在返回false时被提交,只需从图像中删除onclick事件处理程序并将其替换为以下代码

    <input type="image" name="registerButton" value="Register" class="login-button-landing" >
    

    希望这能解决您的问题