首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不处理文本更改的Kendo验证器

不处理文本更改的Kendo验证器
EN

Stack Overflow用户
提问于 2017-11-07 11:48:38
回答 1查看 2.7K关注 0票数 2

我在我的项目中使用了kendo控件。我在客户端使用jquery验证来验证我的控件,但由于jquery验证不适用于kendo控件,所以我使用kendo验证器来验证这些控件。

我正在使用MVC 5项目的数据注释验证。这是样本道场

它工作得很好,但验证只出现在焦点突出或模糊事件上。有什么方法可以像jquery验证那样对控件的值变化进行验证吗?

更新:

以下是帮助我解决这个问题的完整解决方案:

代码语言:javascript
运行
复制
if ($.validator !== undefined) {
        $.validator.setDefaults({
            ignore: [],
            highlight: function (element, errorClass) {
                element = $(element);
                var highLightElement;
                if (element.parent().hasClass("k-picker-wrap") ||
                    element.parent().hasClass("k-numeric-wrap")) {
                    highLightElement = element.parent().parent();
                }
                else if (element.parent().hasClass("k-widget")) {
                    highLightElement = element.parent();
                } else if (element.parent().children('.k-upload-empty').length > 0) {
                    highLightElement = $(element.parent().children('.k-upload-empty')[0]);
                } else {
                    highLightElement = element;
                }
                highLightElement.addClass('input-validation-error');
            },
            unhighlight: function (element, errorClass) {
                element = $(element);
                var highLightElement;
                if (element.parent().hasClass("k-picker-wrap")
                    || element.parent().hasClass("k-numeric-wrap")) {
                    highLightElement = element.parent().parent();
                }
                else if (element.parent().hasClass("k-widget")) {
                    highLightElement = element.parent();
                } else {
                    highLightElement = element;
                }
                highLightElement.removeClass('input-validation-error');
            }
        });
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-12 14:09:28

你有两种方法来达到你的目的:

使用jQuery和KendoUI进行非突出验证

背景

如您所知,Kendo编辑器创建与HTML表单元素不同的元素。其他JavaScript编辑器也以类似的方式工作。实际的HTML是使用CSS (display: none;)隐藏的,问题就在这里。默认情况下, jQuery验证忽略隐藏的输入字段。表单元素上有validation data-*属性,但是由于它是隐藏的,所以当不引人注目的验证触发时,编辑器就会被忽略。

解决方案

您有两种解决这个问题的方法,并且可以很好地使用这两种技术。阅读使Kendo编辑器与jQuery验证一起工作,如果您在实现方面有任何问题,请阅读带有jQuery验证的Kendo UI jQuery作为NumericTextBox的示例

然后,在验证的情况下,您可能会在分配适当的CSS类时遇到问题。你可以读向kendo ui元素添加jquery验证

仅使用KendoUI验证器

您应该为验证目的实现所需的事件。在这里,您需要onChange事件来像jQuery那样进行不引人注目的验证。在描述要做什么时使用以下代码:

代码语言:javascript
运行
复制
$(document).ready(function () {
    function widgetChange() {
        //place validation logic
    };

    $("#dropdownlist").kendoDropDownList({
        dataTextField: "text",
        dataValueField: "value",
        dataSource: data,
        change: widgetChange
    });
})

您可能希望同时使用它们--!所以看一下.Net Mvc 3触发器(提交按钮除外)

更新

一个用最后一个解决方案实现的道场,它添加了一个pattern="\d+"来使用验证消息搜索输入。验证由filtering事件为同一输入调用。注意,您应该根据UI元素使用所需的事件,这里我们使用filtering for 自动完成,而不是使用change for DropDownList

我最近发现了一个新的实现,它看起来很适合尝试和测试。可以在aspnet-mvc入门验证上找到

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47157214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档