0

我有一个表单。我想用 jquery 验证插件实时验证这个表单。完成表单的验证后,我想通过 ajax 提交它。我想通过它的 id 验证表单的每个字段。到目前为止,我已经这样做了:

 <form id="booking-form" name="booking-form" method="post" class="form-horizontal"> 
      <input type="text" id="firstname" value="" name="book[firstname]">
   <input type="text" id="email" value="" name="book[email]">
   <input type="text" id="contact" value="" name="book[contact]">
      <input type="submit" id="submit-booking"  class="btn btn-primary btn-large" value="Book Now"/>

在我的 javascript 函数中:

 $(document).ready(function() {

        $("#booking-form").validate({
    rules: {
        "book[firstname]": {
            required: true
        },
        "book[email]": {
            required: true,
            email: true
        },
        "book[contact]": {
            required: true
        }
    },
    submitHandler: function (form) {

    alert("fff");
        var formData = $(form).serialize();
        //alert(formData);


        $.ajax({
            url: "bs_client_function.php?action=new_b",
            type: "post",
            data: formData,
            beforeSend: function () {

            },
            success: function (data) {

            }
        });
        return false;

    }
});
        });

它不起作用。表单中没有显示验证错误,也没有发送 ajax 请求。我如何克服这个问题?
提前致谢。

4

1 回答 1

2

你有一些严重的问题...

1)绝对没有必要放入.validate()点击处理程序中。它应该进入 DOM 就绪事件处理程序。为什么?因为.validate()这是您初始化插件的方式,而不是测试表单的方法。一旦插件在您的表单上初始化,测试就会自动完成。

2)当规则在里面声明时.validate(),只能通过 field 来赋值,name不能通过jQueryid选择器也不能。

3)您应该真正使用表单内的按钮而不是链接。提交按钮由插件自动捕获。

required4)您在第三个字段上拼写错误。

"#contact": {requred: true}

工作演示:http: //jsfiddle.net/P5tVp/

$(document).ready(function () {

    $("#booking-form").validate({
        rules: {
            "b[firstname]": {
                required: true
            },
            "b[email]": {
                required: true,
                email: true
            },
            "book[contact]": {
                required: true
            }
        },
        submitHandler: function (form) {
            var formData = $(form).serialize();
            $.ajax({
                url: "bs_client_function.php?action=new_b",
                type: "post",
                data: formData,
                beforeSend: function () {

                },
                success: function (data) {

                }
            });
        }
    });

});
于 2013-05-10T14:30:29.640 回答