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

时间:2018-02-23 07:13:20

标签: javascript jquery jquery-validate kendo-grid

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

"如何通过客户端javascript访问jQuery验证器对象,Kendo网格用于行内联编辑的内容是什么?"

上下文

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

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

问题

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

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

其他信息

处理服务器端错误正在处理数据源错误事件 然而,当"只有"发生客户端验证错误。

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

enter image description here

这是该字段的相应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">

1 个答案:

答案 0 :(得分:-1)

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

以下功能附加到剑道网格&#34;编辑&#34;事件。我尝试过使用网格&#34;保存&#34;或&#34; saveChanges&#34;事件但不幸的是,如果在内联表单中发生jQuery验证错误,则不会触发任何事件。

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

以下功能附加到剑道网格&#34;编辑&#34;事件:

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