1

这将是一个愚蠢的问题,但我已经花费了大量时间试图从下面的 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);
        });
    }
});
});

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

4

2 回答 2

1

当您发回对象时,将其作为 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.locwindow.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;
        }

      });
    }
  });
});
于 2012-06-28T14:06:13.903 回答
0

你只需要更换submitHandler功能!

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

并在调用之后,以这种方式.validate()调用.valid()函数:#myform

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

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

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

说明:form当它无效并显示错误时,它不会提交。如果表单有效,则此函数作为普通表单提交提交。

但你为什么要这么做?你还想做什么?

于 2012-06-28T13:57:46.267 回答