gpt4 book ai didi

javascript - 如何让 KendoUI Validator 忽略隐藏的表单元素?

转载 作者:行者123 更新时间:2023-11-29 17:15:58 25 4
gpt4 key购买 nike

我正在尝试将 KendoUI Validator 与 ASP.NET WebForms 项目一起使用。我有一个简单的页面,它有很多输入,当然 ASP.NET 也添加了一些隐藏的表单元素。

我有以下问题:

  1. 为什么 KendoUI Validator 不忽略隐藏的表单字段,我该如何做到这一点?
  2. 为什么 KendoUI 将规则应用于每个输入字段,以及如何让它忽略某些字段。我想要一种声明式的方式来执行此操作,而不是按照 KendoUI Validator API 页面中的示例在我的验证规则中添加各种异常。
  3. 如果没有规则被设置为输入元素中的属性(例如;必需的),那么不应该应用任何验证吗?

我得到的行为:

  • 输入元素上根本没有验证特定属性,当我调用 .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

我整理了一个 fiddle 来证明这一点: http://jsfiddle.net/codeowl/B5ML4/3/

这是代码,对于那些无法访问 fiddle 的人:

我有以下标记:

<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 高级论坛上才能得到回复。

这是回应: How do I get KendoUI Validator to ignore hidden form elements?

Indeed, the hidden input elements are passed through the validation rules logic by default due to the fact that there are multiple widgets which has a hidden input as part of there markup. However, as the built-in rules relays on the presence of certain attributes, if there are missing no validation will happen on the hidden inputs. Therefore, your own custom rules should handle this scenario and skip the appropriate elements. For example:

testRule2: function (input) {
if (!input.is(":hidden")) {
return $.trim(input.val()) !== "";
}
return true;
}

关于javascript - 如何让 KendoUI Validator 忽略隐藏的表单元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17850265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com