使用提交处理程序在Jquery ajax函数中键入Error

时间:2014-03-23 17:02:33

标签: jquery jquery-validate

我正在使用jquery validate插件验证文本框,但是当我提交按钮时它没有验证。在firebug中提交Handler时显示错误:

错误

TypeError:$(...)validate is not a function

代码

function saveData() {
$(document).ready(function () {


    $("#form1").validate({

        rules: {

            txtName: {

                required: true

            }

        },

        message: {

            txtName: {

                required: "Field should not be empty"
            }

        },


        submitHandler: function (form) {

            var txtName = $("#txtName").val();
            var txtEmail = $("#txtEmail").val();
            var txtSurName = $("#txtSurName").val();
            var txtMobile = $("#txtMobile").val();
            var txtAddress = $("#txtAddress").val();

            $.ajax({
                type: "POST",
                url: location.pathname + "/saveData",
                data: "{Name:'" + txtName + "',SurName:'" + txtSurName + "',Email:'" + txtEmail + "',Mobile:'" + txtMobile + "',Address:'" + txtAddress + "'}",
                contentType: "application/json; charset=utf-8",
                datatype: "jsondata",
                async: "true",
                success: function (response) {

                    $(".errMsg ul").remove();
                    var myObject = eval('(' + response.d + ')');
                    if (myObject > 0) {
                        bindData();
                        $(".errMsg").append("<ul><li>Data saved successfully</li></ul>");
                    }
                    else {
                        $(".errMsg").append("<ul><li>Opppps something went wrong.</li></ul>");
                    }
                    $(".errMsg").show("slow");
                    clear();

                },
                error: function (response) {
                    alert(response.status + ' ' + response.statusText);
                }


            });


        }

    });

    $("#btnSave").click(function () {
        $("#form1").submit()

    });


});

}

我在点击按钮时调用此功能。请帮帮我。

按钮字段的设计页面是

                

2 个答案:

答案 0 :(得分:0)

您似乎尚未加载jquery验证插件。它告诉你jquery对象上没有验证函数。

答案 1 :(得分:0)

你有很多问题......

1)你没有在你的jsFiddle中包含jQuery Validate插件,如果你的评论是正确的,你不能在插件之后包含jQuery 。 jQuery首先包含 ,然后是任何jQuery插件。

2)您的ID选择器错误。在<form>标记中,您有id="form1",但在您的jQuery选择器中,您有#Form1。这是区分大小写

3)jQuery validate插件要求输入具有唯一的name属性。您根本没有任何name属性。这将成为一个游戏终结者。如果要在每个name元素上使用input属性进行验证,该插件将无效。

4)messages选项拼写为"messages"。你把它拼错为"message"

5)您的按钮上不需要内联单击处理程序。只需将其设为type="submit"并允许插件自动处理它。这意味着您不需要将.validate()包装在另一个函数中。只需将其放在DOM ready事件处理程序中,以便在页面加载后立即设置表单并准备就绪。

这个让你更接近:http://jsfiddle.net/dxEEe/2/


基于通用的编辑:

使用点击type="button"进行提交只需要click处理程序来捕获按钮。

$("#btnSave").click(function() {
    $("#form1").submit();
});

OR

$("#btnSave").on('click', function() {
    $("#form1").submit();
});

虽然,我不明白这一点,但最终,click处理程序中唯一的内容是submit。换句话说,简单地使用type="submit"按钮将具有完全相同的功能,而无需任何click处理函数。

(在your jsFiddle中,"function"拼错为"functioin"。我认为您需要放慢速度,因为许多问题与拼写有关。)