Update jQuery.Validation definitions and tests

This commit is contained in:
Boris Yankov
2012-11-16 19:14:22 +02:00
parent 4f575f34da
commit 584a5f313b
3 changed files with 277 additions and 3 deletions
+54 -1
View File
@@ -3,8 +3,61 @@
// Definitions by: https://github.com/fdecampredon
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="jquery-1.8.d.ts"/>
interface ValidationOptions {
debug?: bool;
submitHandler?: Function;
invalidHandler?: Function;
ignore?: any;
rules?: any;
messages?: any;
groups?: any;
onsubmit?: bool;
onfocusout?: bool;
onkeyup?: bool;
onclick?: bool;
focusInvalid?: bool;
focusCleanup?: bool;
meta?: string;
errorClass?: string;
validClass?: string;
errorElement?: string;
wrapper?: string;
errorLabelContainer?: any;
errorContainer?: any;
showErrors?: Function;
errorPlacement?: Function;
success?: any;
highlight?: Function;
unhighlight?: Function;
ignoreTitle?: bool;
}
interface Validator {
format(template: string, ...arguments: string[]): string;
form(): bool;
element(element: any): bool;
resetForm(): void;
showErrors(errors: any): void;
numberOfInvalids(): number;
setDefaults(defaults: ValidationOptions): void;
addMethod(name: string, method: (value: any, element: any, ...params: any[]) => any, message?: any): void;
addClassRules(rules: any): void;
addClassRules(name: string, rules: any): void;
}
interface JQuery {
validate(options?: ValidationOptions): Validator;
valid(): bool;
rules(): any;
rules(methodName: string): any;
rules(methodName: string, rules: any): any;
removeAttrs(attributes: string): any;
}
interface JQueryStatic {
validate();
format(template: string, ...arguments: string[]): string;
validator: Validator;
}
+2 -1
View File
@@ -25,10 +25,11 @@ Complete
* [Humane.js](http://wavded.github.com/humane-js/) (by [John Vrbanac](https://github.com/jmvrbanac))
* [Impress.js](https://github.com/bartaz/impress.js) (by [Boris Yankov](https://github.com/borisyankov))
* [Jasmine](http://pivotal.github.com/jasmine/) (by [Boris Yankov](https://github.com/borisyankov))
* [jQuery.Globalize](https://github.com/jquery/globalize) (by [Boris Yankov](https://github.com/borisyankov))
* [jQuery](http://jquery.com/) (from TypeScript samples)
* [jQuery Mobile](http://jquerymobile.com) (by [Boris Yankov](https://github.com/borisyankov))
* [jQuery UI](http://jqueryui.com/) (by [Boris Yankov](https://github.com/borisyankov))
* [jQuery.Globalize](https://github.com/jquery/globalize) (by [Boris Yankov](https://github.com/borisyankov))
* [jQuery.Validation](http://bassistance.de/jquery-plugins/jquery-plugin-validation/) (by [Boris Yankov](https://github.com/borisyankov))
* [Knockback](http://kmalakoff.github.com/knockback/) (by [Marcel Binot](https://github.com/docgit))
* [Knockout.js](http://knockoutjs.com/) (by [Boris Yankov](https://github.com/borisyankov))
* [Knockout.Mapping](https://github.com/SteveSanderson/knockout.mapping) (by [Boris Yankov](https://github.com/borisyankov))
+221 -1
View File
@@ -1,3 +1,223 @@
/// <reference path="../Definitions/jquery-1.8.d.ts"/>
/// <reference path="../Definitions/jquery.validation-1.10.d.ts" />
$("#commentForm").validate();
function test_validate() {
$("#commentForm").validate();
$(".selector").validate({
debug: true
});
$(".selector").validate({
submitHandler: function (form) {
$(form).ajaxSubmit();
}
});
$(".selector").validate({
invalidHandler: function (form, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
var message = errors == 1
? 'You missed 1 field. It has been highlighted'
: 'You missed ' + errors + ' fields. They have been highlighted';
$("div.error span").html(message);
$("div.error").show();
} else {
$("div.error").hide();
}
}
});
$("#myform").validate({
ignore: ".ignore"
});
$(".selector").validate({
rules: {
name: "required",
email: {
required: true,
email: true
}
}
});
$(".selector").validate({
rules: {
name: {
required: true,
minlength: 2
}
},
messages: {
name: {
required: "We need your email address to contact you",
minlength: jQuery.format("At least {0} characters required!")
}
}
});
$("#myform").validate({
groups: {
username: "fname lname"
},
errorPlacement: function (error, element) {
if (element.attr("name") == "fname"
|| element.attr("name") == "lname")
error.insertAfter("#lastname");
else
error.insertAfter(element);
},
debug: true
});
$(".selector").validate({
onsubmit: false
});
$(".selector").validate({
onfocusout: false
});
$(".selector").validate({
onkeyup: false
});
$(".selector").validate({
onclick: false
});
$(".selector").validate({
focusInvalid: false
});
$(".selector").validate({
focusCleanup: true
});
$("#myform").validate({
meta: "validate",
submitHandler: function () { alert("Submitted!") }
});
$(".selector").validate({
errorClass: "invalid"
});
$(".selector").validate({
validClass: "success"
});
$(".selector").validate({
errorElement: "em"
});
$(".selector").validate({
wrapper: "li"
});
$("#myform").validate({
errorLabelContainer: "#messageBox",
wrapper: "li",
submitHandler: function () { alert("Submitted!") }
});
$("#myform").validate({
errorContainer: "#messageBox1, #messageBox2",
errorLabelContainer: "#messageBox1 ul",
wrapper: "li", debug: true,
submitHandler: function () { alert("Submitted!") }
});
$(".selector").validate({
showErrors: function (errorMap, errorList) {
$("#summary").html("Your form contains " + this.numberOfInvalids() + " errors, see details below.");
this.defaultShowErrors();
}
});
$("#myform").validate({
errorPlacement: function (error, element) {
error.appendTo(element.parent("td").next("td"));
},
debug: true
});
$("#myform").validate({
success: "valid",
submitHandler: function () { alert("Submitted!") }
});
$("#myform").validate({
success: function (label) {
label.addClass("valid").text("Ok!")
},
submitHandler: function () { alert("Submitted!") }
});
$(".selector").validate({
highlight: function (element, errorClass) {
$(element).fadeOut(function () {
$(element).fadeIn();
});
}
});
$(".selector").validate({
highlight: function (element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
$(element.form).find("label[for=" + element.id + "]")
.addClass(errorClass);
},
unhighlight: function (element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
$(element.form).find("label[for=" + element.id + "]")
.removeClass(errorClass);
}
});
$(".selector").validate({
ignoreTitle: true
});
}
function test_methods() {
$("#myform").validate();
$("a.check").click(function () {
alert("Valid: " + $("#myform").valid());
return false;
});
$("#myinput").rules("add", {
required: true,
minlength: 2,
messages: {
required: "Required input",
minlength: jQuery.format("Please, at least {0} characters are necessary")
}
});
$("#myinput").rules("remove");
$("#myinput").rules("remove", "min max");
$("#myinput").rules("add", {
required: true,
minlength: 2,
messages: {
required: "Required input",
minlength: jQuery.format("Please, at least {0} characters are necessary")
}
});
$("#skip").click(function () {
var rules = $("#myinput").removeAttrs("min max");
$("#myform").submit();
$("#myinput").attr(rules);
});
$("#myform").validate().form();
$("#myform").validate().element("#myselect");
var validator = $("#myform").validate();
validator.resetForm();
validator.showErrors({ "firstname": "I know that your firstname is Pete, Pete!" });
$("#summary").text(validator.numberOfInvalids() + " field(s) are invalid");
jQuery.validator.setDefaults({
debug: true
});
jQuery.validator.addMethod("domain", function (value, element) {
return this.optional(element) || /^http:\/\/mycorporatedomain.com/.test(value);
}, "Please specify the correct domain for your documents");
jQuery.validator.addClassRules({
name: {
required: true,
minlength: 2
},
zip: {
required: true,
digits: true,
minlength: 5,
maxlength: 5
}
});
jQuery.validator.addClassRules({
name: {
required: true,
minlength: 2
},
zip: {
required: true,
digits: true,
minlength: 5,
maxlength: 5
}
});
}