Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中捕获表单提交的事件是什么?_Javascript_Validation_Dom Events - Fatal编程技术网

在Javascript中捕获表单提交的事件是什么?

在Javascript中捕获表单提交的事件是什么?,javascript,validation,dom-events,Javascript,Validation,Dom Events,这里有几个问题: 我想知道我应该使用什么事件在表单提交时执行一些Javascript(进行一些验证) 完成验证后,如何用Javascript提交表单 假设您有一个名为myForm的表单: var form = document.getElementById('myForm'); var form = document.getElementById('myForm'); 要捕获提交: try { form.addEventListener("submit", someFunction

这里有几个问题:

  • 我想知道我应该使用什么事件在表单提交时执行一些Javascript(进行一些验证)
  • 完成验证后,如何用Javascript提交表单

    • 假设您有一个名为
      myForm
      的表单:

      var form = document.getElementById('myForm');
      
      var form = document.getElementById('myForm');
      
      要捕获提交:

      try {
          form.addEventListener("submit", someFunction, false);
      } catch(e) {
          form.attachEvent("onsubmit", someFunction); //Internet Explorer 8-
      }
      
      注意:如果要停止表单提交,请将
      someFunction
      return设置为false

      提交表格:

      form.submit();
      

      如果您使用jquery,它有一个很好的内置表单提交事件钩子,可以让生活变得非常简单。请查看以下内容:

      1)您正在寻找活动吗

      2) 您可以在onsubmit事件上调用类似validate()的函数,如果验证失败,则返回false。If false从onsubmit函数返回false

      可能是,

      <form name="test" OnSubmit = "return Submit()">
      
      function Submit()
      {
      return Validate()
      }
      
      function Validate()
      {
      //Validation code goes here
      }
      
      
      函数提交()
      {
      返回Validate()
      }
      函数验证()
      {
      //验证代码在这里
      }
      
      您可以使用
      addEventListener(事件,回调)
      ,但Internet Explorer从未正确支持它

      IE使用
      attachEvent(事件、回调)
      代替


      我强烈建议使用一个预构建的addEvent函数(很多都有)或者像jQuery、Prototype、Mootools这样的库,因为它们都内置了优秀的事件处理函数。

      我看了Serhiy在Sasha的帖子上的评论。Serhiy提供的JSFIDLE示例很有趣,我想写一个答案来描述Serhiy提到的行为:


      假设您有一个名为
      myForm
      的表单:

      var form = document.getElementById('myForm');
      
      var form = document.getElementById('myForm');
      
      要在使用提交按钮()时捕获提交,请执行以下操作:

      注意:如果要停止表单提交,请将
      validationFunction
      return设置为false

      要通过javascript提交表单,请执行以下操作:

      form.submit();
      
      注意:如果使用,则不会调用随attachEvent添加的onsubmit事件处理程序。因此,您应该使用以下内容:

      或者,如果您有一个按钮:

      您可以添加javascript以附加到按钮的单击事件。 var btnValidateAndSubmit=document.getElementById(“btnValidateAndSubmit”)

      最后,假设您正在使用SharePoint web表单编辑列表项,并且希望向web表单添加自定义验证。您可以将以下javascript添加到web表单中,以便为OK按钮的onclick添加自定义验证

      var oElements = document.getElementsByTagName("input");
      for  (var i=0; i< oElements.length; i++)
      {
         var elementName = oElements[i].getAttribute("Title");
         var elementType = oElements[i].getAttribute("type");
         var elementValue = oElements[i].value;
      
         if (elementType=="button" && elementValue=="OK") 
         {
          var okbutton = oElements[i];
      
         // alert("typeof okbutton.onclick = "+typeof okbutton.onclick);
          if (typeof okbutton.onclick == "function")
          {
              var previousfunction = okbutton.onclick;
      
              okbutton.onclick = function()
              {
                  if (validateForm())
                  {
                      previousfunction();
                  }
              };
      
          }
          else
          {
              var aspnetForm = document.getElementById("aspnetForm");
              aspnetForm.attachEvent("onsubmit",validateForm);
      
               okbutton.onclick = function()
              {
                  if (validateForm())
                  {
                      aspnetForm.submit();
                  }
              };
          }
      
      
          }
      }
      
      var oElements=document.getElementsByTagName(“输入”);
      对于(变量i=0;i
      这不起作用。不知道为什么这是投票?form.submit()的作用与在@Serhiy上运行此代码的作用不同:我有没有说过它会这样做?问题是
      一旦我完成了验证,我该如何用javascript提交表单?
      我想这就回答了这个问题。我想不是。我想这两个问题你都回答得很好。只是它们不能结合在一起工作。这让我有点恼火,因为这种组合在过去浪费了我很多时间,我讨厌有人钻到那个洞里去。我想我应该编辑答案,而不是在评论中抱怨。