在JQuery Validator submitHandler中重置表单值

时间:2014-04-09 16:17:03

标签: javascript jquery ajax validation

我有一个简单的Jquery Validation调用Ajax,但在调用Ajax页面后我想重置表单。一切正常,但不会重新格式化。

我的JQuery和验证脚本:

var validator = $('#formOne').validate({
    rules: {
        fieldName: {
            required: true,
            minlength: 3
        }
    },
    submitHandler: function(form) {
        $(this).callAjax(form);
        validator.resetForm(); 
        return false; //avoid form submit
    }
});

//Ajax call function
$.fn.callAjax= function(form){
        var postData = $(form).serialize(); 
        var formAction = $(form).attr('action')     
        $.ajax({ 
            type: "POST",
            url: formAction,
            data: postData,          
            dataType: "html",      
            success: function(response){                    
                $("#ShowNames").html(response); 
            }           
        });
 }

我的表格:

<form name="formOne" id="formOne" method="post" action="ajax/insert_name.php?act=insert">
   <input type="text" id="fieldName" name="fieldName">
   <button type="submit" id="loading-btn" value="Submit" data-loading-text="Loading...">Avançar</button>
</form>
<div id="ShowNames"></div>

我尝试了很多方法,但我无法完成这项工作......

任何想法?

2 个答案:

答案 0 :(得分:2)

validator.resetForm();

没有$

Documentation

答案 1 :(得分:0)

修改

考虑到您使用jQuery Validation插件,Dox已提供better and more concise个答案。

我不确定您使用$validator.resetForm();的原因,因为我没有看到$validator引用任何内容。话虽这么说,您应该清除 你的AJAX成功函数,或者在运行AJAX函数后检查某些条件是否为真

您正在寻找的代码(如果在AJAX成功函数中使用)将如下所示:

//Ajax call function
$.fn.callAjax= function(form){
        var postData = $(form).serialize(); 
        var formAction = $(form).attr('action')     
        $.ajax({ 
            type: "POST",
            url: formAction,
            data: postData,          
            dataType: "html",      
            success: function(response){                    
                $("#ShowNames").html(response); 
                // If some condition is true
                $(form)[0].reset();
            }           
        });
 }