我正在尝试将 KendoUI Validator 与 ASP.NET WebForms 项目一起使用。
我有一个简单的页面,有许多输入,当然 ASP.NET 也添加了一些隐藏的表单元素。
我有以下问题:
- 为什么 KendoUI 验证器不忽略隐藏的表单字段,以及如何获取它?
- 为什么 KendoUI 将规则应用于每个输入字段,以及如何让它忽略某些字段。我想要一种声明性的方式来执行此操作,而不是按照 KendoUI Validator API 页面中的示例在验证规则中添加各种异常。
- 如果没有将规则设置为输入元素中的属性(例如必需),那么不应该应用任何验证吗?
我得到的行为:
- 由于输入元素上根本没有验证特定属性,因此当我调用 .validate() 时,验证规则仍然会应用
- 隐藏的表单元素经过验证。
我正在使用以下剑道:
http://cdn.kendostatic.com/2013.2.716/js/jquery.min.js
http://cdn.kendostatic.com/2013.2.716/js/kendo.all.min.js
http://cdn.kendostatic.com/2013.2.716/styles/kendo.common.min.css
http://cdn.kendostatic.com/2013.2.716/styles/kendo.default.min.css
我整理了一个小提琴来证明这一点:http://jsfiddle.net/codeowl/B5ML4/3/ http://jsfiddle.net/codeowl/B5ML4/3/
对于那些无法使用小提琴的人来说,这是代码:
我有以下标记:
<form action="/" id="testForm">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="text" id="testInput" value="">
<a id="testValidate" href="javascript:;">Validate</a>
</form>
和以下脚本:
var validatable = $("#testForm").kendoValidator({
rules: {
testRule1: function (input) {
// Only "Tom" will be a valid value for the FirstName input
return input.is("[name=firstname]") && input.val() === "Tom";
},
testRule2: function (input) {
return $.trim(input.val()) !== "";
}
},
messages: {
testRule1: "Your name must be Test",
testRule2: "Your name must be Foo"
}
}).data("kendoValidator");
$("#testValidate").click(function () {
if (validatable.validate()) {
alert('passed');
}
});
当我按下验证链接时,它会显示隐藏字段的验证消息。
对于任何感兴趣的人,我最终确实得到了这个问题的答复。我必须将其发布到 KendoUI 高级论坛上才能有人回复。
这是回应:如何让 KendoUI Validator 忽略隐藏的表单元素? http://www.kendoui.com/forums/kendo-ui-framework/validation/how-do-i-get-kendoui-validator-to-ignore-hidden-form-elements.aspx
事实上,隐藏的输入元素通过了验证
由于存在多个小部件,因此默认规则逻辑
它有一个隐藏的输入作为标记的一部分。然而,作为
内置规则依赖于某些属性的存在(如果存在)
缺少隐藏输入时不会进行验证。所以,
您自己的自定义规则应该处理这种情况并跳过
适当的元素。例如:
testRule2: function (input) {
if (!input.is(":hidden")) {
return $.trim(input.val()) !== "";
}
return true;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)