如何从jQuery验证插件函数中删除AJAX

How to remove AJAX from jQuery validation plugin function

本文关键字:函数 删除 AJAX 插件 验证 jQuery      更新时间:2023-09-26
这将

是一个愚蠢的问题,但我花了大量的时间试图从下面的jQuery验证插件函数中删除AJAX部分,但仍然有验证工作。可以说我没有成功。

$(document).ready(function(){
$("#myform").validate({
    debug: false,
    rules: {
        group: {required: true}, 
    },
    messages: {
        group: {required: " Choose a group."},
    },
    submitHandler: function(form) {
        $('#results').html('Loading...');
        $.post('', $("#myform").serialize(), function(data) {
            $('#results').html(data);
        });
    }
});
});

所以是的,我很笨。谁能帮我?

发回对象时,请将其作为 JSON 对象发送。

下面是一个示例,我们将使用序列化元素,对一些数据进行条件化,然后使用新页面发回一些内容。

<?php
  $name = $_POST['name'];
  $email = $_POST['email'];
  $phone = $_POST['phone'];
  if(isset($name) && isset($email) && isset($phone)){
    return json_encode(array('filled' => 'yes', 'loc' => 'newpage.php'));
  }
?>

然后在验证器中,我们可以将data.loc解析为window.location以模仿重定向。

$(document).ready(function(){
  $("#myform").validate({
    debug: false,
    rules: {
      group: {required: true}, 
    },
    messages: {
      group: {required: " Choose a group."},
    },
    submitHandler: function(form) {
      $('#results').html('Loading...');
      $.post('', $("#myform").serialize(), function(data) {
        if(data.filled == 'yes'){
          window.location = data.loc;
        }
      });
    }
  });
});

你只需要替换submitHandler函数!

submitHandler: function(form) {
    $('#results').html('Loading...');
    // $.post('', $("#myform").serialize(), function(data) {
    //     $('#results').html(data);
    // });
}

调用 .validate() 后,#myform这样调用 .valid() 函数:

$('#myform').valid();

只需确保通过添加以下内容来删除表单上的默认提交操作:

<form onsubmit="if (!$(this).valid()) return false;">

解释:form无效时,这不会提交并显示错误。如果表单有效,则此功能将作为普通表单提交提交。

但是你为什么要这样做呢?你还想做什么?