javascript - 如何在 ajax 调用上提交表单之前调用 javascript 验证函数

标签 javascript php jquery ajax

这是我的 validate() 函数,返回 true 或 false。 我的问题是我只想在 validate() 返回 true 时调用 ajax 提交表单代码,否则它将显示带有无效数据的错误消息的警报并留在页面中不提交表单,不使用 ajax 我知道我可以使用如果 true 返回 document.form2.submit();但在我的情况下它不起作用,请帮忙!

Ajax 代码:

$("#form2").submit(function(){

var formData = new FormData($(this)[0]);
$.ajax({
    url: "addv.php",
    type: 'POST',
    data: formData,
    success: function (data) {
        $('.fv').html(data).hide().fadeIn(500).delay(1000).fadeOut(500);
    },
    contentType: false,
    processData: false
}); 

return false;
});

JavaScript 函数:

function validate()
{
    var m=document.getElementById("mat").value;
    var c=document.getElementById("kilo").value;
    var v=true;
    if(!isNaN(m))
        {
          alert("matricule  doit etre une chaine !");
          document.getElementById("mat").value=null;
          v=false;
        }
    if(isNaN(c))
        {
          alert("kilométrage doit etre un entier !");
          document.getElementById("kilo").value=null;  
          v=false;
        }
       return v;
}

表格:

  <form enctype="multipart/form-data" class="form2" id="form2">
         <label >Matricule</label></br>
         <input type="text" name="mat"></br>
         <label>kilométrage</label></br>
         <input type="text" name="kilo"></br>
         <label>Marque</label>  </br>
         <select name="mar" id="mar">
          <?php  
            while($res=mysqli_fetch_array($req1))
            {
              echo "<option> $res[0] </option>";
            }
          ?>    
         </select>
         <label>Propriétaire Cin</label>  </br>
         <select name="pro" id="prop" onchange=fn()>
          <?php  
            while($res=mysqli_fetch_array($req2))
            {
              echo "<option> $res[0] </option>";
            }
          ?> 
           </select>
         <label>Nom et Prénom</label>  </br>
         <input type="text" disabled id="propr"></br>
         <label>Photo</label>  </br></br>
         <input type="file" name="img" id="img"style="color:red;"></br></br>
         <input type="submit" value="Ajouter">
         <b><p class="fv" style="color:red" align="center"></p></b>
 </form>

最佳答案

您可以使用preventDefault防止提交表单。并使用条件如果验证返回true则使用Ajax其他情况显示警报

$("#form2").submit(function(e){
  e.preventDefault();
  if(validate()){

    var formData = new FormData($(this)[0]);
    $.ajax({
      url: "addv.php",
      type: 'POST',
      data: formData,
      success: function (data) {
        $('.fv').html(data).hide().fadeIn(500).delay(1000).fadeOut(500);
      },
      contentType: false,
      processData: false
    });     
  } else {
   alert('error');
  }
});

关于javascript - 如何在 ajax 调用上提交表单之前调用 javascript 验证函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35253468/

相关文章:

php - mysql表、php、html无数据时显示 'No Data'或空白

javascript - 在文本输入时动态更新字典

javascript - 如果 Nodejs 模块将一个对象导出到其他两个模块,那么一个下游模块中对该对象所做的更改是否会传播到另一个模块?

php - 如何在php中连接csv文件中的两列?

php - 在 woocommerce 管理订单页面中的自定义按钮单击上运行功能

javascript - 如何根据值进行多重选择?

javascript - 拖入相对定位的可排序列表时,jQuery 可拖动助手位置问题

javascript - 形式选项中的方程

javascript - 当使用 JavaScript 单击按钮时,如何将文本文件的内容复制到另一个文本文件中?

javascript - Angularjs ng-有条件重复