在ajax submit和jquery validate之后,表单没有刷新

时间:2014-03-11 12:23:39

标签: javascript php jquery ajax forms

我有一个表单,我提交到我的数据库,表单包括Jquery Validate插件和ajax提交。

我遇到的问题是,在我单击提交后,表单不清除,它更新到数据库等但我只是想在输入字段上清除表单和css突出显示,以便有人可以添加新记录。有什么帮助吗?

CODE:

$(document).ready(function () {
    $.validator.addMethod("time", function (value, element) {
        return this.optional(element) || /^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$/i.test(value);
    }, "Please enter a valid time.");

    $("#newform").validate({

        //validation
        debug: false,
        rules: {
            Name: {
                required: true,
                minlength: 3,
            },

            Surname: {
                required: true,
            },

        },

        submitHandler: function (form) {
            $.post('process.php', $("#newform").serialize(), function (data) {
                $('#results').html(data);
                $('#newform').reset();
            });
        }
    });
});

HTML:

<form name="newform" id="newform" action="" method="POST">  



    <p>Name:</p>
        <input type="text" id="pName" name="sName" /><br />

    <p>Surname:</p>
        <input type="date" id="pSName" name="pSName" /><br />


    <input type="submit" name="submit" value="Submit"> 
</form>

<div id="results"><div>

3 个答案:

答案 0 :(得分:2)

您可以使用以下代码清除表单:

$('#newform').reset();

要专注于特定的<input>,您可以在reset()电话后使用此功能:

$('input[name="sName"]').focus();

答案 1 :(得分:0)

尝试以下方法:

submitHandler: function (form) {
    var jqxhr = $.post('process.php', $("#newform").serialize(), function (data) {
        $('#results').html(data);
    });

    jqxhr.done(function() {
        $('#newform')[0].reset();
    });
}

答案 2 :(得分:-2)

$('#newform').reset();

上面的代码可以。但是阅读你的评论我发现你必须让ajax调用同步。因为如果它是异步的,您将在服务器端实际处理提交请求之前清除表单。这就是你在process.php

之前看到一个清晰形式的原因

在ajax调用中,也在对象参数 -

中传递async
{url:'xyz.com',async:false}