【问题标题】:jQuery validation of dropdownlist on Kendo window剑道窗口下拉列表的jQuery验证
【发布时间】:2013-04-26 09:29:58
【问题描述】:

我在使用 jQuery 验证来验证 Kendo 小部件(特别是下拉列表)时遇到问题,这些小部件位于模态 KendoWindow 上,其中填充了使用 AJAX 检索的表单。除了使用隐藏字段(下拉列表、文本区域等)的 Kendo 小部件之外,验证对所有内容都非常有效似乎不适用于模态 KendoWindow。解决方案应该是这样的:

$.validator.setDefaults({ ignore: ""});

但在我的情况下它不起作用。这是我的部分视图中的代码,它通过 ajax 加载模式窗口:

    @model ProductManagement.Models.BaseModel

    <script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>

    <script type="text/javascript">        
        $(function () {
            $.validator.setDefaults({ ignore: "" });
        });
    </script>

    @using (Html.BeginForm())
    {
        @Html.ValidationSummary(true)...

这样做有诀窍吗?任何帮助将不胜感激!

【问题讨论】:

    标签: jquery kendo-ui


    【解决方案1】:

    哇,我确实花了很多时间在这上面,但我确实让它发挥了作用。答案当然非常简单。以下是要点:

    要配置 Kendo UI 弹出窗口以使用 jQuery 验证 (MVC 4):

    1. 我使用 jQuery Validation Plugin 1.8.1 完成了这项工作。不确定如何使用 >1.9 版执行此操作。

    2. 在 _Layout.cshtml 中,将以下内容添加到文档就绪函数中:
      $.validator.setDefaults({ 忽略: "" }); 编辑:这是不正确的。 1.8.1 版不需要。

    3. 在包含弹出表单的局部视图上,引用 jquery.validate.min.js 和 jquery.validate.unobtrusive.min.js

    4. 在表单上,​​所有字段都必须有正确的命名。例如,我使用的视图模型导致字段名称看起来像“VM_ProductInfo.Product_ID”、“VM_ProductInfo.Product_Name”等。如果任何字段的命名不一致,例如只是“Product_Description”(没有“VM_ProductInfo. " 前缀),验证只能部分正常工作,尽管出现错误,表单仍会提交。

    5. 在表单上,​​为任何隐藏字段包含 ValidationMessageFor。例如,如果我要隐藏 Product_ID 字段,我仍然需要包含验证,如下所示:

      @Html.HiddenFor(model => model.Product_ID) @Html.ValidationMessageFor(model => model.Product_ID)

    回想起来,上面的数字 4 和 5 是最让我伤心的。如果我知道要检查这些,我会节省很多时间。

    这是一个反复试验的解决方案。如果您知道更好的方法,请回复。

    旁注:Kendo 文档说为 Dropdownlist 小部件指定名称是 mandatory。这不是,至少据我所知。通过省略 .Name,表单将使用与表单其余部分一致的命名来构建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多