I posted the following question on
StackOverflow, but got no response.
So I will try here:
I am attempting to use KendoUI Validator with an ASP.NET WebForms project. I have a simple page, that has a number of inputs, and of course ASP.NET adds some hidden form elements as well.
I have the following questions:
- Why does the KendoUI Validator not ignore hidden form fields, and how to I get it to?
- Why does KendoUI apply the rules to every input field, and how to do get it to ignore some fields. I want a declarative way to do this, not by adding all sorts of exceptions in my validation rule, as per the example in the KendoUI Validator API page.
- Shouldn't it be that if no rule is set as an attribute in the input element (eg; required) then no validation is applied?
Behavior I am getting:
- With no validation specific attributes on the input element at all, the validation rules still get applied when I call .validate()
- Hidden form elements are validated.
I am using the following kendo:
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
I have put together a fiddle that demonstrates this:
http://jsfiddle.net/codeowl/B5ML4/3/
And here is the code, for those that don't have access to fiddle, I have the following markup:
<
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
>
and the following script:
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'
);
}
});
and when I press the validate link it shows validation messages for the hidden fields.