2

我捆绑了 jquery Validate 脚本,例如:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.unobtrusive*",
                        "~/Scripts/jquery.validate*"));

并在 _Layout 中呈现为

@Scripts.Render("~/bundles/jqueryval")

但是当我尝试在按钮上验证我的表单时,单击如下:

$("form").validate({
                    errorPlacement: function (error, element) {
                        error.insertAfter(element).css("display", "inline");
                    }
                });

它给了我这样的错误:

0x800a01b6 - JavaScript 运行时错误:对象不支持属性或方法“验证”

所以有人建议我解决这个问题。

4

2 回答 2

3

你能确定UnobtrusiveJavaScriptEnabled在 中启用web.config吗?

  <appSettings>
    ...
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
    ...
  </appSettings>
于 2013-07-03T19:37:26.867 回答
1

运行时将缩小版本与未缩小版本区分开来(基于标准 JavaScript 命名约定),因此如果您指定"~/Scripts/jquery.unobtrusive*"路径,则说明符将包括jquery.unobtrusive.js缩小关闭和jquery.unobtrusive.min.js缩小打开的时间。

检查您的 Scripts 文件夹中是否有 jquery.unobtrusive.min.js 和 jquery.validate.min.js 文件。

要手动打开缩小 -BundleTable.EnableOptimizations = true;添加捆绑包后粘贴。

编辑:

您的错误说 validate 方法尚未声明。请在调用之前检查您@Scripts.Render("~/bundles/jqueryval")是否位于$("form").validate() 或将 validate 调用包装到jQuery(callback) 函数中,如下所示:

$(function(){
    $("form").validate({
                    errorPlacement: function (error, element) {
                        error.insertAfter(element).css("display", "inline");
                    }
                });
})

那将等到所有文档都加载完毕。

于 2013-07-03T19:54:53.777 回答