📄 test.js
字号:
jQuery.validator.defaults.debug = true;module("validator");test("Constructor", function() { var v1 = $("#testForm1").validate(); var v2 = $("#testForm1").validate(); equals( v1, v2, "Calling validate() multiple times must return the same validator instance" ); equals( 2, v1.elements().length, "validator must have two elements" );});test("validate() without elements, with non-form elements", function() { $("#doesn'texist").validate();});test("valid() plugin method", function() { var form = $("#userForm"); form.validate(); ok ( !form.valid(), "Form isn't valid yet" ); var input = $("#username"); ok ( !input.valid(), "Input isn't valid either" ); input.val("Hello world"); ok ( form.valid(), "Form is now valid" ); ok ( input.valid(), "Input is valid, too" );});test("addMethod", function() { expect( 3 ); $.validator.addMethod("hi", function(value) { return value == "hi"; }, "hi me too"); var method = $.validator.methods.hi; e = $('#text1')[0]; ok( !method(e.value, e), "Invalid" ); e.value = "hi"; ok( method(e.value, e), "Invalid" ); ok( jQuery.validator.messages.hi == "hi me too", "Check custom message" );});test("addMethod2", function() { expect( 4 ); $.validator.addMethod("complicatedPassword", function(value, element, param) { return this.optional(element) || /\D/.test(value) && /\d/.test(value) }, "Your password must contain at least one number and one letter"); var v = jQuery("#form").validate({ rules: { action: { complicatedPassword: true } } }); var rule = $.validator.methods.complicatedPassword, e = $('#text1')[0]; e.value = ""; ok( v.element(e) === undefined, "Rule is optional, valid" ); equals( 0, v.size() ); e.value = "ko"; ok( !v.element(e), "Invalid, doesn't contain one of the required characters" ); e.value = "ko1"; ok( v.element(e) );});test("form(): simple", function() { expect( 2 ); var form = $('#testForm1')[0]; var v = $(form).validate(); ok( !v.form(), 'Invalid form' ); $('#firstname').val("hi"); $('#lastname').val("hi"); ok( v.form(), 'Valid form' );});test("form(): checkboxes: min/required", function() { expect( 3 ); var form = $('#testForm6')[0]; var v = $(form).validate(); ok( !v.form(), 'Invalid form' ); $('#form6check1').attr("checked", true); ok( !v.form(), 'Invalid form' ); $('#form6check2').attr("checked", true); ok( v.form(), 'Valid form' );});test("form(): selects: min/required", function() { expect( 3 ); var form = $('#testForm7')[0]; var v = $(form).validate(); ok( !v.form(), 'Invalid form' ); $("#optionxa").attr("selected", true); ok( !v.form(), 'Invalid form' ); $("#optionxb").attr("selected", true); ok( v.form(), 'Valid form' );});test("form(): with equalTo", function() { expect( 2 ); var form = $('#testForm5')[0]; var v = $(form).validate(); ok( !v.form(), 'Invalid form' ); $('#x1, #x2').val("hi"); ok( v.form(), 'Valid form' );});test("check(): simple", function() { expect( 3 ); var element = $('#firstname')[0]; var v = $('#testForm1').validate(); ok( v.size() == 0, 'No errors yet' ); v.check(element); ok( v.size() == 1, 'error exists' ); v.errorList = []; $('#firstname').val("hi"); v.check(element); ok( !v.size() == 1, 'No more errors' );});test("hide(): input", function() { expect( 3 ); var errorLabel = $('#errorFirstname'); var element = $('#firstname')[0]; element.value ="bla"; var v = $('#testForm1').validate(); errorLabel.show(); ok( errorLabel.is(":visible"), "Error label visible before validation" ); ok( v.element(element) ); ok( errorLabel.is(":hidden"), "Error label not visible after validation" );});test("hide(): radio", function() { expect( 2 ); var errorLabel = $('#agreeLabel'); var element = $('#agb')[0]; element.checked = true; var v = $('#testForm2').validate({ errorClass: "xerror" }); errorLabel.show(); ok( errorLabel.is(":visible"), "Error label visible after validation" ); v.element(element); ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" );});test("hide(): errorWrapper", function() { expect(2); var errorLabel = $('#errorWrapper'); var element = $('#meal')[0]; element.selectedIndex = 1; errorLabel.show(); ok( errorLabel.is(":visible"), "Error label visible after validation" ); var v = $('#testForm3').validate({ wrapper: "li", errorLabelContainer: $("#errorContainer") }); v.element(element); ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" );});test("hide(): container", function() { expect(5); var errorLabel = $('#errorContainer'); var element = $('#testForm3')[0]; ok( errorLabel.is(":hidden"), "Error label not visible at start" ); var v = $('#testForm3').validate({ errorWrapper: "li", errorContainer: $("#errorContainer") }); v.form(); ok( errorLabel.is(":visible"), "Error label visible after validation" ); $('#meal')[0].selectedIndex = 1; v.form(); ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" ); $('#meal')[0].selectedIndex = -1; v.element("#meal"); ok( errorLabel.is(":visible"), "Error label visible after validation" ); $('#meal')[0].selectedIndex = 1; v.element("#meal"); ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" );});test("valid()", function() { expect(4); var errorList = [{name:"meal",message:"foo", element:$("#meal")[0]}]; var v = $('#testForm3').validate(); ok( v.valid(), "No errors, must be valid" ); v.errorList = errorList; ok( !v.valid(), "One error, must be invalid" ); reset(); v = $('#testForm3').validate({ submitHandler: function() { ok( false, "Submit handler was called" ); }}); ok( v.valid(), "No errors, must be valid and returning true, even with the submit handler" ); v.errorList = errorList; ok( !v.valid(), "One error, must be invalid, no call to submit handler" );});test("showErrors()", function() { expect( 4 ); var errorLabel = $('#errorFirstname').hide(); var element = $('#firstname')[0]; var v = $('#testForm1').validate(); ok( errorLabel.is(":hidden") ); equals( 0, $("label.error[@for=lastname]").size() ); v.showErrors({"firstname": "required", "lastname": "bla"}); equals( true, errorLabel.is(":visible") ); equals( true, $("label.error[@for=lastname]").is(":visible") );});test("showErrors(), allow empty string and null as default message", function() { $("#userForm").validate({ rules: { username: { required: true, minlength: 3 } }, messages: { username: { required: "", minlength: "too short" } } }); ok( !$("#username").valid() ); equals( "", $("label.error[@for=username]").text() ); $("#username").val("ab"); ok( !$("#username").valid() ); equals( "too short", $("label.error[@for=username]").text() ); $("#username").val("abc"); ok( $("#username").valid() ); ok( $("label.error[@for=username]").is(":hidden") );});test("showErrors() - external messages", function() { expect( 4 ); var methods = $.extend({}, $.validator.methods); var messages = $.extend({}, $.validator.messages); $.validator.addMethod("foo", function() { return false; }); $.validator.addMethod("bar", function() { return false; }); equals( 0, $("#testForm4 label.error[@for=f1]").size() ); equals( 0, $("#testForm4 label.error[@for=f2]").size() ); var form = $('#testForm4')[0]; var v = $(form).validate({ messages: { f1: "Please!", f2: "Wohoo!" } }); v.form(); equals( "Please!", $("#testForm4 label.error[@for=f1]").text() ); equals( "Wohoo!", $("#testForm4 label.error[@for=f2]").text() ); $.validator.methods = methods; $.validator.messages = messages;});test("showErrors() - custom handler", function() { expect(5); var v = $('#testForm1').validate({ showErrors: function(errorMap, errorList) { equals( v, this ); equals( v.errorList, errorList ); equals( v.errorMap, errorMap ); equals( "buga", errorMap.firstname ); equals( "buga", errorMap.lastname ); } }); v.form();});test("option: (un)highlight, default", function() { expect(3); $("#testForm1").validate(); var e = $("#firstname") ok( !e.hasClass("error") ); e.valid() ok( e.hasClass("error") ); e.val("hithere").valid() ok( !e.hasClass("error") );});test("option: (un)highlight, nothing", function() { expect(3); $("#testForm1").validate({ highlight: false, unhighlight: false }); var e = $("#firstname") ok( !e.hasClass("error") ); e.valid() ok( !e.hasClass("error") ); e.valid() ok( !e.hasClass("error") );});test("option: (un)highlight, custom", function() { expect(6); $("#testForm1").validate({ highlight: function(element, errorClass) { equals( "invalid", errorClass ); $(element).hide(); }, unhighlight: function(element, errorClass) { equals( "invalid", errorClass ) $(element).show(); }, errorClass: "invalid" }); var e = $("#firstname") ok( e.is(":visible") ); e.valid() ok( !e.is(":visible") ); e.val("hithere").valid() ok( e.is(":visible") );});test("option: (un)highlight, custom2", function() { expect(6); $("#testForm1").validate({ highlight: function(element, errorClass) { $(element).addClass(errorClass); $(element.form).find("label[for=" + element.id + "]").addClass(errorClass); }, unhighlight: function(element, errorClass) { $(element).removeClass(errorClass); $(element.form).find("label[for=" + element.id + "]").removeClass(errorClass); }, errorClass: "invalid" }); var e = $("#firstname") var l = $("#errorFirstname") ok( !e.is(".invalid") ); ok( !l.is(".invalid") ); e.valid() ok( e.is(".invalid") ); ok( l.is(".invalid") ); e.val("hithere").valid() ok( !e.is(".invalid") ); ok( !l.is(".invalid") );});test("rules() - internal - input", function() { expect(4); var element = $('#firstname')[0]; var v = $('#testForm1').validate(); var rule = v.rules(element); equals( "required", rule[0].method ); equals( true, rule[0].parameters ); equals( "minlength", rule[1].method ); equals( 2, rule[1].parameters );});test("rules() - internal - select", function() { expect(2); var element = $('#meal')[0]; var v = $('#testForm3').validate(); var rule = v.rules(element); equals( "required", rule[0].method ); ok( rule[0].parameters );});test("rules() - external", function() { expect( 4 ); var element = $('#text1')[0]; var v = $('#form').validate({ rules: { action: {date: true, min: 5} } }); var rule = v.rules(element); equals( "date", rule[0].method ); ok( rule[0].parameters ); equals( "min", rule[1].method ); equals( 5, rule[1].parameters );});test("rules() - external - complete form", function() { expect(1); var methods = $.extend({}, $.validator.methods); var messages = $.extend({}, $.validator.messages); $.validator.addMethod("verifyTest", function() { ok( true, "method executed" ); return true; }); var element = $('#text1')[0]; var v = $('#form').validate({ rules: { action: {verifyTest: true} } }); v.form(); $.validator.methods = methods; $.validator.messages = messages;});test("rules() - internal - input", function() { expect(7); var element = $('#form8input')[0]; var v = $('#testForm8').validate(); var rule = v.rules(element); equals( "required", rule[0].method ); equals( true, rule[0].parameters ); equals( "number", rule[1].method ); equals( true, rule[1].parameters ); equals( "rangelength", rule[2].method ); equals( 2, rule[2].parameters[0] ); equals( 8, rule[2].parameters[1] );});test("rules(), merge min/max to range, minlength/maxlength to rangelength", function() { jQuery.validator.autoCreateRanges = true; var v = $("#testForm1clean").validate({ rules: { firstname: { min: 5,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -