繁体   English   中英

JavaScript运行时错误:预期功能

[英]JavaScript runtime error: Function expected

我有以下准备好的功能。

$(document).ready(function() {
    var window = $("#window");
    viewModel.validator = $("#Details").kendoValidator().data("kendoValidator")({
        rules: {
            checkPersonContactInfo: function (input) {
                if (intakeView.viewModel.get("personDetails.Email") == '' && intakeView.viewModel.get("personDetails.CellPhone") == '' && intakeView.viewModel.get("personDetails.HomePhone") == '' && intakeView.viewModel.get("personDetails.WorkPhone") == '') {
                    return false;
                }
                else {
                    return true;
                }
            }

        },
    });
    if (!window.data("kendoWindow")) {
        window.kendoWindow({
            width: "600px",
            title: "Valdiation errors",
            visible: false
        });
    };
});

每当我调试时,它都会崩溃,并显示错误消息“ 0x800a138a-JavaScript运行时错误:预期功能”。 我多次检查是否缺少括号,但看不到任何东西。

编辑:发现更多错误的语法,您有不需要的逗号和分号:

$(document).ready(function() {
    var window = $("#window");
    viewModel.validator = $("#Details").kendoValidator().data("kendoValidator")({
        rules: {
            checkPersonContactInfo: function (input) {
                if (intakeView.viewModel.get("personDetails.Email") == '' && intakeView.viewModel.get("personDetails.CellPhone") == '' && intakeView.viewModel.get("personDetails.HomePhone") == '' && intakeView.viewModel.get("personDetails.WorkPhone") == '') {
                    return false;
                }
                else {
                    return true;
                }
            }

        } // here there was a comma which was not needed.
    });
    if (!window.data("kendoWindow")) {
        window.kendoWindow({
            width: "600px",
            title: "Valdiation errors",
            visible: false
        });
    } //here you had also a trailing ; which I removed
});

尾随逗号可能是问题所在:

 }, 

如尾随逗号之前提到的是您的代码中的问题。 自ECMAScript 5规范以来,JavaScript对象文字中的尾部逗号是有效的,因此在最新的浏览器中有效。 但是,IE仍然存在问题,在较旧的浏览器中会出现语法错误。

我只是借助WebStorm对其进行了优化,这是WebStorm的输出:-)(您的代码中也有不必要的分号):

$(document).ready(function() {
    var window = $("#window");
    var viewModel = {};
    viewModel.validator = $("#Details").kendoValidator().data("kendoValidator")({
        rules: {
            checkPersonContactInfo: function (input) {
                return !(intakeView.viewModel.get("personDetails.Email") == '' && intakeView.viewModel.get("personDetails.CellPhone") == '' && intakeView.viewModel.get("personDetails.HomePhone") == '' && intakeView.viewModel.get("personDetails.WorkPhone") == '');
            }
        }
    });
    if (!window.data("kendoWindow")) {
        window.kendoWindow({
            width: "600px",
            title: "Valdiation errors",
            visible: false
        });
    }
});

我认为您正在尝试执行以下操作:

viewModel.validator = $("#Details").kendoValidator({//this is the change you need
        rules: {
            checkPersonContactInfo: function (input) {
                if (intakeView.viewModel.get("personDetails.Email") == '' && intakeView.viewModel.get("personDetails.CellPhone") == '' && intakeView.viewModel.get("personDetails.HomePhone") == '' && intakeView.viewModel.get("personDetails.WorkPhone") == '') {
                    return false;
                }
                else {
                    return true;
                }
            }

        },
    });

更多: 看到这个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM