我正在为我的项目使用剑道控件。我在客户端使用jquery验证来验证我的控件,但由于jquery验证不适用于kendo控件,所以我使用kendo验证器来验证控件。
我在MVC 5项目中使用数据注释验证。这是示例dojo。
它工作得很完美,但验证只出现在焦点偏离或模糊事件上。是否有任何方法可以像jquery验证一样验证控件的值更改?
更新:
以下是帮助我解决此问题的完整解决方案:
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');
}
});
}
你有两种方法来实现你的目标:
使用jQuery Unobtrusive Validation与KendoUI
背景
正如您所知,Kendo UI编辑器创建的元素与HTML表单元素不同。其他JavaScript编辑器也以类似的方式工作。实际的HTML是使用CSS(display: none;
)隐藏的,这就是问题所在默认情况下,jQuery Validation会忽略隐藏的输入字段。表单元素上有validation data-*
属性,,但由于它是隐藏的,当触发不引人注目的验证时,编辑器将被忽略。
解决方案
您有两种方法可以解决这个问题,并且可以完美地使用这两种技术。阅读《让Kendo UI编辑器与jQuery验证一起工作》,如果您在实现方面有任何问题,请阅读Kendo UI NumericTextBox With jQuery Validation作为NumericTextBox的示例
然后,在验证的情况下,您可能会遇到分配正确CSS类的问题。您可以阅读向kendoui元素添加jquery验证。
仅使用KendoUI验证器
您应该为验证目的实现所需的事件。在这里,您需要onChange
事件才能像jQuery Unobtrusive Validation一样工作。使用以下代码描述要做的操作:
$(document).ready(function () {
function widgetChange() {
//place validation logic
};
$("#dropdownlist").kendoDropDownList({
dataTextField: "text",
dataValueField: "value",
dataSource: data,
change: widgetChange
});
})
您可能想同时使用它们!请看一下.Net Mvc 3触发器(而不是提交按钮)Unobtrusive Validation
更新
使用最后一个解决方案实现的dojo,该解决方案将pattern="d+"
添加到带有验证消息的搜索输入中。验证由filtering
事件为同一输入调用请注意,您应该使用基于UI元素的所需事件,这里我们使用filtering
进行自动完成,而不是使用change
进行DropDownList。
我最近发现了一个新的实现,它看起来很好尝试和测试。这可以在aspnetmvc开始验证中获得