Javascript $(';表单';)。验证未定义
我正在尝试使用本文描述的技术在MVC中实现一个向导。(我正在使用最新版本的MVC。) 但我似乎在以下代码行中遇到了问题:Javascript $(';表单';)。验证未定义,javascript,jquery,asp.net-mvc,model-view-controller,wizard,Javascript,Jquery,Asp.net Mvc,Model View Controller,Wizard,我正在尝试使用本文描述的技术在MVC中实现一个向导。(我正在使用最新版本的MVC。) 但我似乎在以下代码行中遇到了问题: var validator = $("form").validate(); // obtain validator 此行导致错误,因为未定义$(“表单”).validate 不幸的是,我真的不知道这个特定的代码是如何工作的,所以我不知道如何修复它。有人能解释一下这里发生了什么吗?应该在哪里定义validate?听起来好像您没有在html文件中包含jquery验证脚本。你是否
var validator = $("form").validate(); // obtain validator
此行导致错误,因为未定义$(“表单”).validate
不幸的是,我真的不知道这个特定的代码是如何工作的,所以我不知道如何修复它。有人能解释一下这里发生了什么吗?应该在哪里定义
validate
?听起来好像您没有在html文件中包含jquery验证脚本。你是否:
<script src="http://cdn.jsdelivr.net/jquery.validation/1.13.1/jquery.validate.min.js"></script>
或者在本地包含它?听起来好像您没有将jquery验证作为脚本包含在html文件中。你是否:
<script src="http://cdn.jsdelivr.net/jquery.validation/1.13.1/jquery.validate.min.js"></script>
或者本地包含它?实际上,默认情况下,_Layout.cshtml文件包含位于页面末尾的脚本文件(就在结束正文标记之前),如果您在浏览器中查看呈现的页面,就会看到 常规视图中的内容嵌入在布局文件中具有@RenderBody调用的位置。正如您所看到的,对RenderBody的调用在包含的脚本之前。这就是为什么您编写的任何引用外部代码的javascript代码都无法工作的原因 即使在包含脚本之后,“脚本”部分也在布局文件中定义。因此,如果您使用@section“Scripts”,那么您放在那里的任意代码肯定会出现在包含的js文件之后,因此它会工作
希望它现在更有意义。实际上,默认情况下,_Layout.cshtml文件包含位于页面末尾的脚本文件(就在结束正文标记之前),如果您在浏览器中查看呈现的页面,就会看到 常规视图中的内容嵌入在布局文件中具有@RenderBody调用的位置。正如您所看到的,对RenderBody的调用在包含的脚本之前。这就是为什么您编写的任何引用外部代码的javascript代码都无法工作的原因 即使在包含脚本之后,“脚本”部分也在布局文件中定义。因此,如果您使用@section“Scripts”,那么您放在那里的任意代码肯定会出现在包含的js文件之后,因此它会工作
希望它现在更有意义。它应该在jQuery验证插件中定义,您可能在什么地方包含了它?我想知道这一点。但是我的布局文件包含
@Styles.Render(“~/Content/css”)@Scripts.Render(“~/bundles/jquery”)@Scripts.Render(“~/bundles/jqueryval”)@Scripts.Render(“~/bundles/modernizer”)
。请尝试console.log($((“form”)),以便您可以在控制台中检查表单是否实际位于DOM中,如果你能在jquery对象的原型(\uuuuuu proto\uuuuu
)下找到validate作为一种方法。它应该在jquery validate插件中定义,你可能在什么地方包括了它?我想知道这一点。但是我的布局文件包含@Styles.Render(“~/Content/css”)@Scripts.Render(“~/bundles/jquery”)@Scripts.Render(“~/bundles/jqueryval”)@Scripts.Render(“~/bundles/modernizer”)
。请尝试console.log($((“form”)),以便您可以在控制台中检查表单是否实际位于DOM中,如果您可以在jquery对象的原型(\uuuu proto\uuuu
)下找到validate作为一种方法。我没有确切的那一行,但我有@Scripts.Render(“~/bundles/jquery”)
和@Scripts.Render(“~/bundles/jqueryval”)
,在我的布局文件的顶部。可能是到jqueryval的路径不正确,你能再检查一下吗?我的渲染标记包括
,我可以从浏览器中单击链接,脚本文件会按预期显示出来。@JonathanWood-然后文件就在那里,奇怪的是函数没有定义。你确定你的问题中的脚本之前包含了插件吗?你能澄清一下插件在这里具体指的是什么吗?我没有这一行,但我有@Scripts.Render(“~/bundles/jquery”)
和@Scripts.Render(“~/bundles/jqueryval”)
在我的布局文件的顶部。可能是jqueryval的路径不正确,你能仔细检查一下吗?我呈现的标记包括
,我可以单击浏览器中的链接,脚本文件会如预期的那样出现。@JonathanWood-然后文件就在那里,奇怪的是函数没有定义。你确定你的问题中的脚本之前已经包含了插件吗?你能澄清一下插件在这里具体指的是什么吗?是的,这就是问题所在。昨晚经过一些研究和挠头,我终于弄明白了。(顺便说一句,在回答中不必称呼我的名字为@JonathanWood。)谢谢。我开始写评论,但意识到时间太长,因此我将其转换为回答。修好了。谢谢。是的,这就是问题所在。昨晚经过一些研究和挠头,我终于弄明白了。(顺便说一句,在回答中不必称呼我的名字为@JonathanWood。)谢谢。我开始写评论,但意识到时间太长,因此我将其转换为回答。修好了。谢谢