Merge pull request #4842 from EnableSoftware/ms-jquery-validation

Add Microsoft JQuery Unobtrusive Validation
This commit is contained in:
Masahiro Wakame
2015-07-13 07:51:35 +09:00
2 changed files with 100 additions and 0 deletions
@@ -0,0 +1,62 @@
/// <reference path="jquery-validation-unobtrusive.d.ts" />
// Test overloads for `add` method
$.validator.unobtrusive.adapters.add("adapter", () => { });
$.validator.unobtrusive.adapters.add("adapter", function () {
return true;
});
$.validator.unobtrusive.adapters.add("adapter", ["param1", "param2"], () => { });
// Test overloads for `addMinMax` method
$.validator.unobtrusive.adapters.addMinMax("adapter", "minRule", "maxRule", "minMaxRule");
$.validator.unobtrusive.adapters.addMinMax("adapter", "minRule", "maxRule", "minMaxRule", "minAttr");
$.validator.unobtrusive.adapters.addMinMax("adapter", "minRule", "maxRule", "minMaxRule", "minAttr", "maxAttr");
// Test overloads for `addSingleVal` method
$.validator.unobtrusive.adapters.addSingleVal("adapter", "rule");
$.validator.unobtrusive.adapters.addSingleVal("adapter", "attr", "rule");
// Test overloads for `addBool` method
$.validator.unobtrusive.adapters.addBool("adapter");
$.validator.unobtrusive.adapters.addBool("adapter", "rule");
// Test `addMethod`
$.validator.unobtrusive.adapters.addMethod("adapter", (value, element, params) => {
return true;
});
// Test method chaining
$.validator.unobtrusive.adapters
.add("required", () => { })
.addMinMax("length", "minlength", "maxlength", "rangelength")
.addSingleVal("regex", "pattern")
.addBool("url")
.addMethod("nonalphamin", (value, element, nonalphamin) => {
return null;
});
// Test `Adapters` indexer
var adapterName = $.validator.unobtrusive.adapters[0].name;
// Test `Adapters` iterator
$.each($.validator.unobtrusive.adapters, function (index, adapter) {
console.log(adapter.name);
console.log(adapter.params);
console.log(adapter.adapt);
});
// Test `Adapters` array
$.validator.unobtrusive.adapters.push({ name: "adapter", params: ["param1"], adapt: () => { } });
// Test overloads for `parseElement`
$.validator.unobtrusive.parseElement("form");
$.validator.unobtrusive.parseElement(document);
$.validator.unobtrusive.parseElement(document.getElementById("the-form"));
$.validator.unobtrusive.parseElement($("#the-form"));
$.validator.unobtrusive.parseElement($("#the-form"), true);
// Test overloads for `parse`
$.validator.unobtrusive.parse("form");
$.validator.unobtrusive.parse(document);
$.validator.unobtrusive.parse(document.getElementById("the-form"));
$.validator.unobtrusive.parse($("#the-form"));
@@ -0,0 +1,38 @@
// Type definitions for Microsoft jQuery Unobtrusive Validation v3.2.3
// Project: http://aspnetwebstack.codeplex.com/
// Definitions by: Matt Brooks <https://github.com/EnableSoftware>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../jquery.validation/jquery.validation.d.ts" />
declare module MicrosoftJQueryUnobtrusiveValidation {
type JQuerySelector = string | Document | Element | JQuery;
interface Adapter {
name: string;
params: string[];
adapt: Function
}
interface Adapters extends Array<Adapter> {
add(adapterName: string, fn: Function): Adapters;
add(adapterName: string, params: string[], fn: Function): Adapters;
addMinMax(adapterName: string, minRuleName: string, maxRuleName: string, minMaxRuleName: string, minAttribute?: string, maxAttribute?: string): Adapters;
addSingleVal(adapterName: string, ruleName: string): Adapters;
addSingleVal(adapterName: string, attribute: string, ruleName: string): Adapters;
addBool(adapterName: string, ruleName?: string): Adapters;
addMethod(adapterName: string, fn: (value: string, element: Element, params: any) => any): Adapters;
}
interface Validator {
adapters: Adapters;
parseElement(element: JQuerySelector, skipAttach?: boolean): void;
parse(selector: JQuerySelector): void;
}
}
declare module JQueryValidation {
interface ValidatorStatic {
unobtrusive: MicrosoftJQueryUnobtrusiveValidation.Validator;
}
}