使用jQuery event.preventDefault()创建条件提交

时间:2018-02-25 14:05:35

标签: javascript jquery ajax

在提交表单之前,我不想检查插入的日期是否可用。我有一个PHP脚本可以执行此检查,我想通过jquery / ajax调用此PHP脚本。

我相信我应该使用event.preventDefault();来避免提交表单。但是我不知道怎么能把它与Ajax调用结合起来。无论如何,表单的操作都会执行,用户被重定向到test.html。

我做错了什么?有人有什么建议吗?

我的.html

<form id="checkData" action="test.html" method="post">
 <input type="text" id="from" name="from">
 <input type="text" id="to" name="to">
<input type="submit" value="Book">

我的.js

 $( "#checkData" ).submit(function( event ) {
   var data = $("#checkData :input").serializeArray();
   $.post("check.php", data, function(json){
    if (json.status == "fail") { //this works fine without using the "event.preventDefault() statement"
      event.preventDefault();
    }
   }, "json");

1 个答案:

答案 0 :(得分:0)

将preventDefault()放在提交按钮的click事件上。

我没有测试代码,所以可能会有一些错字。

$( "#checkData input[type='submit']" ).click(function( event ) {
   event.preventDefault();
   var data = $("#checkData :input").serializeArray();
   $.post("check.php", data, function(json){
    if (json.status != "fail") { 
       $(#checkData).submit();
    }
   }, "json");
   event.stopPropagation();