【问题标题】:element 0 is undefined on form post in MVC元素 0 在 MVC 中的表单发布上未定义
【发布时间】:2012-07-09 14:01:25
【问题描述】:

我正在打开一个查询对话框,该对话框在 MVC 应用程序中有两个查询选项卡。两个标签加载不同的部分页面。我已经在其中一个选项卡中形成。表单验证工作正常。我收到错误 $element[0] is undefined in jquery.validate.js @ line 806 当表单中没有验证错误时。我无法理解什么问题。下面是代码:

    Include references in _Layout.cshtml:
        <script src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/jquery-ui-1.8.20.min.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>

Partial view which open in one of tab:
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

@using (Ajax.BeginForm("UpdateMediaCode", "MediaCode", null,
        new AjaxOptions
        {
            UpdateTargetId = "myMsg",
            InsertionMode = InsertionMode.Replace,
            HttpMethod = "POST",
            OnSuccess = "mySuccess"
        }, new { @id = "myFormId" }
        ))
{
    @Html.ValidationSummary(true) 
 }
<script type="text/javascript">
    $(document).ready(function () {
        $.validator.unobtrusive.parse($('#myFormId));
    }
</script>

任何帮助将不胜感激。这是怎么回事?

【问题讨论】:

    标签: jquery asp.net-mvc jquery-validate


    【解决方案1】:

    在AjaxForm 中用作OnSuccess 处理程序的mySuccess 回调内部应该调用$.validator.unobtrusive.parse 方法,而不是在document.ready 内部。您不应该在部分中有 document.ready 处理程序。顺便说一句,您不应该在部分内容中有任何 javascript。 JavaScript 应该写在单独的文件中。部分视图应该只包含标记。

    【讨论】:

    • 即使在将 $.validator.unobtrusive.parse 移动到 onSuccess 之后仍然会出错。顺便说一句,即使这条线被评论了,我也会出错
    • 我想那是因为您在 jquery 和 jquery.validate 脚本之后包含了 jquery.validate.unobtrusive.js 脚本,这显然是错误的。您的脚本应该以正确的顺序包含:1. jquery,2. jquery.validate,3. jquery.validate.unobtrusive。不要在局部视图中包含脚本。
    • 我不是 Jquery 专家。不确定,发生了什么。我更改了脚本顺序并删除了 jquery.validate。我的主页开始抛出错误。如果我不从局部视图中排除 jquery.validate.unobtrusive,它不会执行验证。
    • 您不应该删除 jquery.validate。 jquery.validate.unobtrusive 脚本依赖于 jquery.validate。
    • $.validator.unobtrusive.parse 语句在即时窗口中返回“未定义”。任何想法?表单验证有效,但在没有错误时会抛出“元素 0 未定义”
    猜你喜欢
    • 2018-06-08
    • 1970-01-01
    • 2010-10-17
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多