Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jquery(插件)验证表单时出现问题_Jquery_Jquery Validate_Validation - Fatal编程技术网

使用jquery(插件)验证表单时出现问题

使用jquery(插件)验证表单时出现问题,jquery,jquery-validate,validation,Jquery,Jquery Validate,Validation,该插件似乎工作正常。如果我将两个字段留空,我会得到通知,它们是必需的,并且必须是有效的数字 我遇到的问题是,如果我用正确的数据填充两个文本字段,然后点击add按钮,那么我在下面的代码中遇到了错误。数据仍然会被发送到我的控制器并执行我的添加,但警报会从我的错误部分触发 $(document).ready(function (e) { $("#frmOverride").validate({ rules: {

该插件似乎工作正常。如果我将两个字段留空,我会得到通知,它们是必需的,并且必须是有效的数字

我遇到的问题是,如果我用正确的数据填充两个文本字段,然后点击add按钮,那么我在下面的代码中遇到了错误。数据仍然会被发送到我的控制器并执行我的添加,但警报会从我的错误部分触发

    $(document).ready(function (e) {
            $("#frmOverride").validate({
                rules: {
                    maintenancePercentage: {
                        required: true,
                        number: true
                    },
                    officePercentage: {
                        required: true,
                        number: true
                    }
                }
            });
     }
此部分位于“我的保存”按钮的单击事件中:

        var seg1 = dataItem.Seg1_Code;
        var maintPercentage = $("#maintenancePercentage").val();
        var officePercentage = $("#officePercentage").val();

        if ($('#frmOverride').validate().form()) {
            $.ajax({
                type: "POST",
                url: "/PayrollMarkup/AddPayrollMarkupOverride",
                data: {
                    seg1: seg1,
                    maintenancePercentage: maintPercentage,
                    officePercentage: officePercentage
                },
                success: function (data) {
                    //console.log(data);
                    var window = $("#window").data("kendoWindow");
                    $('#window_wnd_title').text("");
                    window.close();
                    $("#maintenancePercentage").val('');
                    $("#officePercentage").val('');

                    readDefaultsGrid();

                    readNotDefaultsGrid();
                },

                error: function (e) {
                    console.log(e);
                    alert("There was an error setting custom values. Maintenance % and Office % are required.");
                }
            });
        }

您需要清理您的代码,您的代码正在搜索相同的标记4次(!)

不要重复$('#PayrollMarkupDefaultsGrid')。数据(“kendoGrid”)四次,而是将其存储在变量中,并通过该变量使用其方法和成员

至于你的问题,我相信你的剑道对象还没有初始化,当你已经尝试使用它。我相信您的代码在这里引发了异常:

$('#PayrollMarkupDefaultsGrid').data("kendoGrid").dataSource.read();

因为标记不存在或未初始化为剑道对象,或者剑道对象没有公共数据源成员,或者数据源成员没有read()函数。请检查这些并让我知道您的结果。

没有必要这样做

if ($('#frmOverride').validate().form()) {
        $.ajax({ ...
当然,您不希望在
click
事件处理程序中执行这些操作。这是因为jqueryvalidate插件已经捕获了
点击事件,检查了有效的表单,并提供了一个
submitHandler
回调函数,该函数完全用于通过
ajax
提交

,

submitHandler,回调,默认:默认(本机)表单提交

回调,用于在表单提交时处理实际提交 这是有效的。获取窗体作为唯一参数。替换默认值 提交提交表单后通过Ajax提交表单的正确位置 已验证


简单演示:

我按照您的建议对代码进行了一些清理(谢谢),但我在控制台中没有看到任何错误。谢谢。我略读了一下文档以加快速度。@Mithrilhall,没问题,这可能是最常见的错误。如果我需要用我自己的自定义消息更改错误消息,该怎么办?@bhuvan,这是离题的,因此我建议您参考中的
消息
选项。否则,请随意发布新问题。不过,请。
$(document).ready(function () {

    $("#frmOverride").validate({
        rules: {
            maintenancePercentage: {
                required: true,
                number: true
            },
            officePercentage: {
                required: true,
                number: true
            }
        },
        submitHandler: function (form) {
            // your ajax goes here
            return false; // to block page redirect since you're using ajax
        }
    });

});