当前位置: 首页 > 知识库问答 >
问题:

调用preventDefault后,如何提交表单数据?

郎嘉树
2023-03-14

对于如何控制表单中的提交事件,我有点困惑,我试图在这里找到一个简单的答案。

我想在将表单数据发送到表单操作脚本之前验证表单输入。我试图通过捕获submit事件、使用Ajax调用验证脚本来解决这个问题,如果验证成功,我希望调用实际的表单过程。但我不确定该如何进行。简单地使用location.replace(“action.php”)似乎会失败(我猜是没有发送表单值)。

下面是概念代码:

null

$("form").on("submit", function(event) {
  event.preventDefault();
  
  data = {
    the_input_val: $("#input_to_be_validated").val()
  };
  
  $.post("ajax_validate_input.php", data, function(data, status) {
    if (status == "success") {
      if (data == "invalid") {
        alert("Invalid input");
        // Form data is not sent... as expected
      } else {
        // Here I want to send the form data. But the event.preventDefault() prevents it from happening
        // What do I put here to call the form's 'action' script with form data? 
      }
    }
  });

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="action.php">
  <input id="input_to_be_validated" name="my_input" type="text">
  <button type="submit" name="submit">Submit</button>
</form>

null

共有2个答案

白腾
2023-03-14

您可以像这样使用submit()方法:

if (status == "success") {
  if (data == "invalid") {
    alert("Invalid input");
    // Form data is not sent... as expected
  } else {
    event.submit();
  }
}
柴瀚昂
2023-03-14

调用HTMLFormElement上的submit()方法以手动提交表单,而无需再次通过submit事件。

可以通过读取event对象的target属性来检索表单。

但是,要使其正常工作,请丢失按钮上的name=“submit”值,因为这将导致尝试使用该方法提交时出错。

null

const $form = $("form");

$form.on("submit", function(event) {
  event.preventDefault();
  
  const data = {
    the_input_val: $("#input_to_be_validated").val()
  };
  
  $.post("ajax_validate_input.php", data, function(data, status) {
    if (status == "success") {
      if (data == "invalid") {
        alert("Invalid input");
        // Form data is not sent... as expected
      } else {
        event.target.submit();
      }
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="action.php">
  <input id="input_to_be_validated" name="my_input" type="text">
  <button type="submit">Submit</button>
</form>
 类似资料:
  • 问题内容: 我想在点击提交按钮时验证WordPress帖子上的用户条目,显示错误消息是否存在问题,如果一切正常,则提交表单。我有一个PHP函数进行检查,如果输入的数据还可以,则返回,否则返回一些错误代码。以下JavaScript发出AJAX请求,并应在成功检查后继续提交表单,但不会: 该代码是根据WPSE问题改编的,该问题最初对我不起作用,因为未提交表单。我发现,如果绑定到的jQuery函数返回t

  • 问题内容: 我有一个简单的表单,其中remote = true。 此表单实际上位于HTML对话框中,单击“提交”按钮后,该对话框将立即关闭。 现在,在成功提交表单之后,我需要在HTML主页面上进行一些更改。 我尝试使用jQuery。但是,这不能确保任务在表单提交的某种形式的响应之后得到执行。 如何附加回调,以便仅在成功提交表单后执行我的代码?有什么方法可以向表单添加一些.success或.comp

  • 问题内容: 我认为这很简单,但是正如标题所示,在任何地方都找不到如何执行此操作的方法,就像成功提交表单后如何处理ajax一样。我尝试搜索它,但所看到的只是我需要的相反内容,即在ajax发布后提交。我将尝试草拟与Im正在研究的程序非常相似的程序。 这是我的表格。 这是一个有关ajax帖子的示例(不要介意该帖子的逻辑): 现在,我想做的就是提交表单时,如果提交成功,就会触发ajax发布。因此,就像在一

  • 问题内容: 我有一个ID为ID的表单,该表单具有以下div,其中包含一个Submit按钮: 单击后,将调用该函数。该函数将上述div的innerHTML更改为“ processing …”(因此,提交按钮现在消失了)。 上面的代码有效,但是现在的问题是我无法提交表单!我试着把它放在函数中: 但这是行不通的。 我该如何提交表格? 问题答案: 将表单的属性设置为,代码即可正常工作。

  • 问题内容: 我正在尝试使用phantomJS(真棒的工具!)为具有登录凭据的页面提交表单,然后将目标页面的内容输出到stdout。我可以使用幻像访问该表单并成功设置其值,但是我不太确定提交表单并输出后续页面内容的正确语法。到目前为止,我有: 问题答案: 我想到了。基本上,这是一个异步问题。您不能只是提交并期望立即呈现下一页。您必须等到触发下一页的onLoad事件。我的代码如下:

  • 问题内容: 在我的MVC视图中,我有一个按钮: 当我单击此按钮时,我需要调用一个动作,在其中执行一些操作,然后提交我的表单。 我有这个jQuery的: 然后我要提交表格。在控制器中,我有2个动作: 问题是当我按下按钮时,无法到达Action,导致ajax给了我,但是当我删除时,ajax可以正常工作,但是Action永远不会执行。 请问如何执行两个动作的任何想法?我想也许在尝试通过jquery 添加