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

How to catch client side jQuery validation errors for Kendo grid?

注意:据我所知,替代标题可能是:

"How to access the jQuery validator object via client side javascript, what the the Kendo grid uses for row inline edit?"

上下文

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

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

问题

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

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

附加信息

正在通过处理数据源错误事件来处理服务器端错误 然而,当发生 "only" 客户端验证错误时,这甚至不会被触发。

这是一个导致客户端验证错误的字段:

这是该字段对应的 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 验证器对象已解决。 可以进一步改进。

以下函数附加到 Kendo 网格的 "edit" 事件。我试过使用网格的 "save" 或 "saveChanges" 事件,但不幸的是,如果在线表单中出现 jQuery 验证错误,则这两个事件都不会触发。

所以我正在使用验证器的验证事件本身,并在编辑事件发生时绑定验证处理程序。 (似乎是为内联表单即时创建的验证器,并未重复使用。)

以下函数附加到 Kendo 网格的 "edit" 事件:

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]
            }
    });