You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery Validate所有字段验证通过后调用指定函数?

问题:表单通过jQuery Validate验证后调用AJAX函数

已配置表单验证规则及提示信息如下:

$('.form').validate({
    rules:{
       nome:{
        minlength: 2
       },
       email:{
        email: true
       },
       telefone:{
        number: true,
        minlength: 10,
        maxlength: 10
       },
       mensagem: { 
        required: true
        }
    }, messages:{
        nome:{
            required: "Por favor digite seu nome!",
            minlength: "No mínimo 2 caracteres para o nome"
        },
        email: "Por favor digite seu email!",
        telefone:{
            required: "Por favor digite seu telefone!",
            minlength: "Telefone no mínimo 10 caracteres",
            maxlength: "Telefone no máximo 10 caracteres"
        } ,
        mensagem: "Por favor digite sua mensagem!"
    },
})

尝试使用submitHandler和success选项均未生效,期望在所有字段验证正确时运行以下AJAX函数:

$(function(){
    $('.form').submit(function(){
        $.ajax({
        url: 'validation.php',
        type: 'POST',
        data: $('.form').serialize(),
        success: function(data){
            $('.mostrar').html(data);
        }
    })
    return false;
    })
})

解决方案

问题出在你同时绑定了表单的submit事件,和jQuery Validate的submitHandler逻辑冲突了。正确做法是移除单独的submit事件绑定,把AJAX逻辑直接放到validate配置的submitHandler中——这是插件专门用来处理验证通过后提交行为的回调函数。

修改后的完整代码:

$('.form').validate({
    rules:{
       nome:{
        minlength: 2
       },
       email:{
        email: true
       },
       telefone:{
        number: true,
        minlength: 10,
        maxlength: 10
       },
       mensagem: { 
        required: true
        }
    }, messages:{
        nome:{
            required: "Por favor digite seu nome!",
            minlength: "No mínimo 2 caracteres para o nome"
        },
        email: "Por favor digite seu email!",
        telefone:{
            required: "Por favor digite seu telefone!",
            minlength: "Telefone no mínimo 10 caracteres",
            maxlength: "Telefone no máximo 10 caracteres"
        } ,
        mensagem: "Por favor digite sua mensagem!"
    },
    // 验证通过后执行的回调
    submitHandler: function(form) {
        $.ajax({
            url: 'validation.php',
            type: 'POST',
            data: $(form).serialize(), // 直接使用form参数,更可靠
            success: function(data){
                $('.mostrar').html(data);
            }
        });
        return false; // 阻止表单默认提交行为
    }
});

关键说明:

  • submitHandler会在所有字段验证通过后触发,参数form是当前表单的DOM对象,用$(form).serialize()序列化表单数据比全局选择器更准确
  • 不要同时绑定表单的submit事件,否则会干扰Validate插件的默认处理流程,导致submitHandler不生效
  • 无需额外包裹$(function(){}),只要确保代码在DOM加载完成后执行即可(比如放在$(document).ready()中或页面底部)

内容的提问来源于stack exchange,提问作者BernardoDB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 07:03:24