我已经捆绑了jquery验证脚本,如:
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运行时错误:对象不支持属性或方法'validate'
所以有人建议我解决这个问题。
答案 0 :(得分:3)
您能否确保UnobtrusiveJavaScriptEnabled
启用了web.config
?
<appSettings>
...
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
...
</appSettings>
答案 1 :(得分:1)
运行时将未缩小的缩小版本(基于标准JavaScript命名约定)排除在外,因此,如果指定"~/Scripts/jquery.unobtrusive*"
路径,则在缩小关闭时,说明符将包含jquery.unobtrusive.js
并jquery.unobtrusive.min.js
当缩小开启时。
查看您的Scripts文件夹中是否有jquery.unobtrusive.min.js和jquery.validate.min.js文件。
要手动启用缩小功能,请在添加捆绑包后粘贴BundleTable.EnableOptimizations = true;
。
编辑:
您的错误说明验证方法尚未声明。
在致电@Scripts.Render("~/bundles/jqueryval")
之前,请检查您的$("form").validate()
是否位于
要么
将validate调用包装成jQuery(callback) function,如下所示:
$(function(){
$("form").validate({
errorPlacement: function (error, element) {
error.insertAfter(element).css("display", "inline");
}
});
})
这将等到所有文档都加载完毕。