Javascript 如何捕获Kendo网格的客户端jQuery验证错误?

Javascript 如何捕获Kendo网格的客户端jQuery验证错误?,javascript,jquery,jquery-validate,kendo-grid,Javascript,Jquery,Jquery Validate,Kendo Grid,注:就我的理解正确而言,备选标题可以是: “如何通过客户端javascript访问jQuery验证程序对象,Kendo网格使用什么进行行内联编辑?” 上下文 我可以使用数据源错误捕获(处理)服务器端验证错误,并将其显示在通知中。我希望在类似的通知中显示所有客户端验证错误 正如下面的代码所示,这似乎是一个标准的jQuery验证。我仍然不知道如何将处理程序附加到现有网格 问题 客户端验证错误似乎未触发数据源错误事件 如何编写处理程序来迭代客户端验证错误并以自定义方式显示它们 其他信息 正在通过处理数

注:就我的理解正确而言,备选标题可以是:

“如何通过客户端javascript访问jQuery验证程序对象,Kendo网格使用什么进行行内联编辑?”

上下文

我可以使用数据源错误捕获(处理)服务器端验证错误,并将其显示在通知中。我希望在类似的通知中显示所有客户端验证错误

正如下面的代码所示,这似乎是一个标准的jQuery验证。我仍然不知道如何将处理程序附加到现有网格

问题

客户端验证错误似乎未触发数据源错误事件

如何编写处理程序来迭代客户端验证错误并以自定义方式显示它们

其他信息

正在通过处理数据源错误事件来处理服务器端错误 但是,当发生“仅”客户端验证错误时,甚至不会触发此操作

以下是导致客户端验证错误的字段:

下面是该字段对应的html,其中包含验证属性:

<input class="k-textbox form-control" 
   data-val="true" 
   data-val-length="First Name should be maximum 30 characters" 
   data-val-length-max="30" 
   data-val-regex="Enter at least 3 characters. Use only alphabets and ,.'- characters" 
   data-val-regex-pattern="[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]{3,}" 
   data-val-required="The First Name field is required." 
   id="FirstName" 
   name="FirstName" 
   data-bind="value:FirstName">


我已经结束了下面的解决方案。解决了主要问题,即如何访问Kendo网格内部内联表单的内部jquery验证程序对象。进一步的改进是可能的

以下函数附加到剑道网格的“编辑”事件。我曾尝试使用网格的“save”或“saveChanges”事件,但不幸的是,如果内联表单中发生jQuery验证错误,则不会触发任何事件

因此,我使用验证器的验证事件本身,并在编辑事件发生时绑定验证处理程序。(似乎是为内联表单动态创建的验证程序,没有被重用。)

以下函数附加到剑道网格的“编辑”事件:

函数(e){
var validatable=e.sender.editable.validatable;
绑定(“验证”,函数(e){
var errors=e.sender.errors();
对于(变量i=0;i
因此,假设我们都知道这可能是ASP.NET项目的一部分,并且您可能正在使用或可能没有使用不引人注目的验证插件?是的。但是,不管它是否是ASP,帖子中的jquery validate标记以及带有data val属性的html代码inhibit都包含问题与jquery验证相关的信息d、 然而,我很难在客户端获取验证程序对象,因为kendo内联网格编辑将其屏蔽得相当深。因此,要么我们反向工程kendo,以了解内联编辑的验证程序在哪里,要么我们找到其他方法访问验证程序。我更喜欢解决此客户端问题,因为我看到了更好的机会。我同意我们需要关注客户端。但是,我的评论很重要,因为您没有向我们展示任何客户端JavaScript,也没有向我们展示如何构造和调用
.validate()
方法。现在就得到它吗?是的,我们都得到了它。(没有客户端代码,都是由Telerik.js完成的,不管它是直接从JavaScript还是从Kendo UI驱动的。)或Telerik ASP)
function (e) {
    var validatable = e.sender.editable.validatable;
    validatable.bind("validate", function (e) {
        var errors = e.sender.errors();
            for (var i = 0; i < errors.length; i++) {
                 // do whatever you want with errors[i]
            }
    });