【问题标题】:jquery validation and ajax form submitjquery验证和ajax表单提交
【发布时间】:2014-06-01 15:27:39
【问题描述】:

我在 jquery 验证和 ajax 表单提交方面遇到问题。

验证码如下:

$(function() {
   $("#contact-form").validate({
       rules: {
               name: {
                       required: true,
                       minlength: 2,
                       maxlength: 32
               },
               email: {
                       required: true,
                       email: true
               },
               message: {
                       required: true,
                       minlength: 20
               }

       },           
       messages: {
               name: {
                       required: "Please, enter a name",
                       minlength: $.format("Keep typing, at least {0} characters required"),
                       maxlength: $.format("Whoa! Maximum {0} characters allowed")
               },
               email: {
                       required: "Please, enter an email",
                       email: $.format("Please, enter valid email")
               },
               message: {
                       required: "Please, enter a message",
                       minlength: $.format("Keep typing, at least {0} characters required")
               }               
       },

       submitHandler:function(form) {
               form.submit();                         
        }
   }); 
});

这里是提交表单的ajax代码:

$(document).ready(function(){
$('#contact-form').on('submit',function(e) {

$('#name').val('Your Name');
$('#email').val('Your Email');
$('#message').val('Your Message');

$.ajax({
    url:'',
    data:$(this).serialize(),
    type:'POST',
    success:function(data){
        console.log(data);
        $("#success").show().fadeOut(10000);
        },
    error:function(data){
        $("#error").show().fadeOut(10000);
        }
    });
    e.preventDefault();
});
});

我尝试做的是表单验证,然后提交表单。提交后,表单应该会再次出现初始值。

问题是当我删除 ajax 时验证工作正常,但我需要 ajax 代码来重新显示表单。

我怎样才能让这两段代码一起工作?

【问题讨论】:

    标签: javascript php jquery ajax forms


    【解决方案1】:

    将您的 ajax 调用放在 submitHandler 函数中:

    submitHandler:function(form) {
        //form.submit();     
    
    
        $.ajax({
            url:'', //you will need a url surely, perhaps $(form).attr('action');
            data:$(form).serialize(),
            type:'POST',
            success:function(data){
                console.log(data);
                $('#name').val('Your Name');
                $('#email').val('Your Email');
                $('#message').val('Your Message');
                $("#success").show().fadeOut(10000);
            },
            error:function(data){
                $("#error").show().fadeOut(10000);
            }
        });                    
    }
    

    【讨论】:

    • 非常感谢。它工作得很好。看起来我试图在提交处理程序中放置很多东西:) 我把与 ajax 提交相关的整个代码放在那里。正如您所展示的那样,只放置ajax调用就足够了。再次感谢!
    • @user3696921 没问题,很高兴能帮到你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2023-03-04
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2018-06-12
    相关资源
    最近更新 更多