在Kendo窗口中对dropdownlist进行jQuery验证

时间:2013-04-26 09:29:59

标签: jquery kendo-ui

我在使用jQuery验证来验证模型KendoWindow上的Kendo小部件(特别是下拉列表)时出现问题,该模型使用AJAX检索表单。除了使用隐藏字段(下拉列表,文本区域等)的Kendo小部件之外,验证工作得很漂亮我已经看过许多帖子(例如herehere)来描述和解决非常类似的问题,但这些方法似乎不适用于模态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)...

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

1 个答案:

答案 0 :(得分:3)

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

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

  1. 我使用jQuery Validation Plugin 1.8.1进行了这项工作。不确定如何使用版本&gt; 1.9。

  2. 执行此操作
  3. 在_Layout.cshtml中,将以下内容添加到文档就绪功能中:
    $ .validator.setDefaults({ignore:“”}); 编辑:这是不正确的。版本1.8.1不需要。

  4. 在包含弹出窗体的局部视图中,引用jquery.validate.min.js和jquery.validate.unobtrusive.min.js

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

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

    @ Html.HiddenFor(model =&gt; model.Product_ID) @ Html.ValidationMessageFor(model =&gt; model.Product_ID)

  7. 回顾过去,上面的数字4和5是让我最悲伤的原因。如果我知道检查这些,我会节省很多小时的头撞。

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

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