0

我想提交一个没有重定向/刷新页面但使用jquery.validate. 我尝试做类似的事情

$("#myForm").validate({
    errorLabelContainer: "#errorContainer",
    wrapper: "div",
    submitHandler: function (form) {
        form.submit(function () {
            return false;
        });
        $('#form-container').fadeOut(function () {
            $('#afterSubmit').fadeIn()
        });
        return false;
    }
});

我尝试更改form.submit

form.ajaxSubmit(function () { return false; });

或者

form.submit(function () {
    var options = {};
    $(this).ajaxSubmit(options);
    return false;
});

以及许多其他变体。

当我只执行以下代码时,不会提交表单。

submitHandler: function (form) {
        return false;
}

在验证并且不被重定向后,我应该怎么做才能提交我的表单?

4

3 回答 3

1

这就是你应该这样做的方式。请在此处找到工作示例http://jsfiddle.net/rQu9W/
并确保添加jquery.min.jsjquery.validate.jsjquery.form.js ,就像在我的 jsFiddle 示例中一样

$(function(){
  $("#myForm").validate({

    submitHandler: function(form) {
      $(form).ajaxSubmit({
        clearForm: true,//To clear form after ajax submitting
        success: function(){alert('done');}
      });
      return false;
    },

    invalidHandler: function(form) {
      alert('error');
    }

  });  
});
于 2013-09-08T02:55:36.593 回答
0

这是我用来进行 ajax 调用的方法:

var sendData = "action=do_action";
sendData += "&value=" + $("input.value").val();

$.ajax({
    url: "post.php",//Page to send our data to
    global: false,
    type: "POST",
    data: sendData,
    dataType: "html",
    async:false,
    success: function(data){
        //We could return JSON and then just parse that, but I usually just return values like this

        //create jquery object from the response html
        var $response=$(data);

        var results = $response.filter('div.results').text();//Or .html() if we want to return HTML to show                     

        if (results == "true") {
            alert("it works");
        }else{
            var reason= $response.filter('div.reason').text();
            alert(reason);
        }
    }
});

PHP 看起来像:

<?php
    $action = $_POST['action'];

    if ($action == "do_action") {
        if (true) {
            echo "<div class='result'>true</div>";
        }else{
            echo "<div class='result'>false</div>";
            echo "<div class='reason'>Houston, we have a problem!</div>";
        }
    }
?>
于 2013-09-07T01:46:15.063 回答
0

如果您需要在不重新加载页面的情况下提交表单,则必须使用 ajax 提交。是的,为此您需要将 form.submit 更改为 form.ajaxSubmit。但是除了验证插件之外,您还需要包含 jQuery 表单插件。您可以在此处找到有关 jQuery 表单插件的 ajaxSubmit 功能的更多详细信息。http://jquery.malsup.com/form/#api

于 2013-09-07T01:59:07.370 回答