0

我正在使用 Jquery validate 插件来验证表单,验证一切都很好我的问题出在 submitHandler 函数中,由于某种原因我没有得到没有将表单发送到我的邮件,我检查了 php 并且完全美好的。这是我正在做的更完整的文件http://jsfiddle.net/KszmV/

我需要做的其他事情,我不知道该怎么做,它是如何提交表单而不再次加载页面并在表单末尾显示一条消息

这是我的脚本

<script type="text/javascript">
    $(document).ready(function(){

        $("#contactusform1").validate({
            rules: {
                "name": {
                    required: true,
                    minlength: 3
                },
                "phone":{
                    required:true,
                    digits:true
                },
               "email":{
                    required: true
                }

            },
            messages: {
                "name": {
                    required: "Please enter a name"
                },
                "phone":{
                    required: "Please provide a contact number"
                },
                "email":{
                    required: "Enter a valid email"
                }
            },
            errorPlacement: function(error, element) {
                error.insertAfter(element);
            },

            submitHandler: function (form) {    

                $.ajax({ 
                    type: 'POST', 
                    data: $('form').serialize(),
                    url: 'process-contact1.php', 
                    success: function () {

                    }                        

                });

                form.submit();
            }           

        });

    });
</script>
4

1 回答 1

1

你有几个问题

submitHandler: function (form) {    
    $.ajax({ 
        type: 'POST', 
        data: $(form).serialize(), // $(form) is ok here
        url: 'process-contact1.php', 
        success: function () {
        }                        
    });
    form.submit();  //<-- REMOVE this
    return false; //<-- ADD this
}

演示:http: //jsfiddle.net/Y8cHm/

  • 删除form.submit(),因为插件已经在处理这个问题。

  • 你需要一个return falsesubmitHandler因为你正在做ajax,否则你会得到一个正常的提交/页面刷新。

  • 您的 jsFiddle缺少</form>标签。

  • 您的 jsFiddle链接到插件的gitHub 页面而不是CDN。

  • $(form).serialize()完全可以接受,如上面工作演示中所示。使用引号,$('form')只需定位<form>页面上的任何内容。而目标是与已经传递给您的函数 $(form)的表单元素相同。在您的演示中,它们都给出了相同的结果,尽管这可能不适用于所有其他情况。.validate()

于 2013-03-29T23:05:06.380 回答