📄 test.js
字号:
success: "valid" }); var label = $("#testForm1 label"); ok( label.is(".error") ); ok( !label.is(".valid") ); $("#firstname").val("hi"); v.form(); ok( label.is(".error") ); ok( label.is(".valid") );});test("success option3", function() { expect(5); equals( "", $("#firstname").val() ); $("#errorFirstname").remove(); var v = $("#testForm1").validate({ success: "valid" }); equals( 0, $("#testForm1 label").size() ); $("#firstname").val("hi"); v.form(); var labels = $("#testForm1 label"); equals( 2, labels.size() ); ok( labels.eq(0).is(".valid") ); ok( !labels.eq(1).is(".valid") );});test("successlist", function() { var v = $("#form").validate({ success: "xyz" }); v.form(); equals(0, v.successList.length);});test("success isn't called for optional elements", function() { expect(4); equals( "", $("#firstname").removeClass().val() ); $("#lastname").remove(); $("#errorFirstname").remove(); var v = $("#testForm1").validate({ success: function() { ok( false, "don't call success for optional elements!" ); }, rules: { firstname: "email" } }); equals( 0, $("#testForm1 label").size() ); v.form(); equals( 0, $("#testForm1 label").size() ); $("#firstname").valid(); equals( 0, $("#testForm1 label").size() );});test("messages", function() { var m = jQuery.validator.messages; equals( "Please enter no more than 0 characters.", m.maxLength(0) ); equals( "Please enter at least 1 characters.", m.minLength(1) ); equals( "Please enter a value between 1 and 2 characters long.", m.rangeLength([1, 2]) ); equals( "Please enter a value less than or equal to 1.", m.maxValue(1) ); equals( "Please enter a value greater than or equal to 0.", m.minValue(0) ); equals( "Please enter a value between 1 and 2.", m.rangeValue([1, 2]) );});test("jQuery.format", function() { equals( "Please enter a value between 0 and 1.", jQuery.format("Please enter a value between {0} and {1}.", 0, 1) ); equals( "0 is too fast! Enter a value smaller then 0 and at least -15", jQuery.format("{0} is too fast! Enter a value smaller then {0} and at least {1}", 0, -15) ); var template = jQuery.format("{0} is too fast! Enter a value smaller then {0} and at least {1}"); equals( "0 is too fast! Enter a value smaller then 0 and at least -15", template(0, -15) ); template = jQuery.format("Please enter a value between {0} and {1}."); equals( "Please enter a value between 1 and 2.", template([1, 2]) );});test("option: ignore", function() { var v = $("#testForm1").validate({ ignore: "[@name=lastname]" }); v.form(); equals( 1, v.size() );});test("option: subformRequired", function() { jQuery.validator.addMethod("billingRequired", function(value, element) { if ($("#bill_to_co").is(":checked")) return $(element).parents("#subform").length; return !this.optional(element); }, ""); var v = $("#subformRequired").validate(); v.form(); equals( 1, v.size() ); $("#bill_to_co").attr("checked", false); v.form(); equals( 2, v.size() ); delete $.validator.methods.billingRequired; delete $.validator.messages.billingRequired;});module("expressions");test("expression: :blank", function() { var e = $("#lastname")[0]; equals( 1, $(e).filter(":blank").length ); e.value = " "; equals( 1, $(e).filter(":blank").length ); e.value = " " equals( 1, $(e).filter(":blank").length ); e.value= " a "; equals( 0, $(e).filter(":blank").length );});test("expression: :filled", function() { var e = $("#lastname")[0]; equals( 0, $(e).filter(":filled").length ); e.value = " "; equals( 0, $(e).filter(":filled").length ); e.value = " " equals( 0, $(e).filter(":filled").length ); e.value= " a "; equals( 1, $(e).filter(":filled").length );});test("expression: :unchecked", function() { var e = $("#check2")[0]; equals( 1, $(e).filter(":unchecked").length ); e.checked = true; equals( 0, $(e).filter(":unchecked").length ); e.checked = false; equals( 1, $(e).filter(":unchecked").length );});module("events");test("validate on blur", function() { function errors(expected, message) { equals(expected, v.size(), message ); } function blur(target) { $("#testForm1").triggerEvent("focusout", target[0]); } var e = $("#firstname"); var v = $("#testForm1").validate(); blur(e); errors(0, "No value yet, required is skipped on blur"); e.val("h"); blur(e); errors(1, "Required was ignored, but as something was entered, check other rules, minLength isn't met"); e.val("hh"); e.blur(0, "All is fine"); e.val(""); v.form(); errors(2, "Submit checks all rules, both fields invalid"); blur(e); errors(1, "Blurring the field results in emptying the error list first, then checking the invalid field: its still invalid, don't remove the error" ); e.val("h"); blur(e); errors(1, "Entering a single character fulfills required, but not minLength: 2, still invalid"); e.val("hh"); blur(e); errors(0, "Both required and minLength are met, no errors left");});test("validate on keyup", function() { function errors(expected, message) { equals(expected, v.size(), message ); } function keyup(target) { $("#testForm1").triggerEvent("keyup", target[0]); } var e = $("#firstname"); var v = $("#testForm1").validate(); keyup(e); errors(0, "No value, no errors"); e.val("a"); keyup(e); errors(0, "Value, but not invalid"); e.val(""); v.form(); errors(2, "Both invalid"); keyup(e); errors(1, "Only one field validated, still invalid"); e.val("hh"); keyup(e); errors(0, "Not invalid anymore"); e.val("h"); keyup(e); errors(1, "Field didn't loose focus, so validate again, invalid"); e.val("hh"); keyup(e); errors(0, "Valid");});test("validate on not keyup, only blur", function() { function errors(expected, message) { equals(expected, v.size(), message ); } var e = $("#firstname"); var v = $("#testForm1").validate({ onkeyup: false }); errors(0); e.val("a"); $("#testForm1").triggerEvent("keyup", e[0]); e.keyup(); errors(0); $("#testForm1").triggerEvent("focusout", e[0]); errors(1);});test("validate on keyup and blur", function() { function errors(expected, message) { equals(expected, v.size(), message ); } var e = $("#firstname"); var v = $("#testForm1").validate(); errors(0); e.val("a"); $("#testForm1").triggerEvent("keyup", e[0]); errors(0); $("#testForm1").triggerEvent("focusout", e[0]); errors(1);});test("validate email on keyup and blur", function() { function errors(expected, message) { equals(expected, v.size(), message ); } var e = $("#firstname"); var v = $("#testForm1").validate(); v.form(); errors(2); e.val("a"); $("#testForm1").triggerEvent("keyup", e[0]); errors(1); e.val("aa"); $("#testForm1").triggerEvent("keyup", e[0]); errors(0);});test("validate checkbox on click", function() { function errors(expected, message) { equals(expected, v.size(), message ); } function trigger(element) { element[0].click(); $("#form").triggerEvent("click", element[0]); } var e = $("#check2"); var v = $("#form").validate({ rules: { check2: "required" } }); trigger(e); errors(0); trigger(e); equals( false, v.form() ); errors(1); trigger(e); errors(0); trigger(e); errors(1);});test("validate multiple checkbox on click", function() { function errors(expected, message) { equals(expected, v.size(), message ); } function trigger(element) { element[0].click(); $("#form").triggerEvent("click", element[0]); } var e1 = $("#check1").attr("checked", false); var e2 = $("#check1b"); var v = $("#form").validate({ rules: { check: { required: true, minLength: 2 } } }); trigger(e1); errors(0, "Minlength must be skipped"); trigger(e2); errors(0); trigger(e2); equals( false, v.form() ); errors(1); trigger(e2); errors(0); trigger(e2); errors(1);});test("validate radio on click", function() { function errors(expected, message) { equals(expected, v.size(), message ); } function trigger(element) { element[0].click(); $("#form").triggerEvent("click", element[0]); } var e1 = $("#radio1"); var e2 = $("#radio1a"); var v = $("#form").validate({ rules: { radio1: "required" } }); errors(0); equals( false, v.form() ); errors(1); trigger(e2); errors(0); trigger(e1); errors(0);});module("ajax");test("check the serverside script works", function() { stop(); $.getJSON("users.php", {value: 'asd'}, function(response) { ok( response, "yet available" ); $.getJSON("users.php", {username: "asdf"}, function(response) { ok( !response, "already taken" ); start(); }); });});test("check the serverside script works2", function() { stop(); $.getJSON("users2.php", {value: 'asd'}, function(response) { ok( response, "yet available" ); $.getJSON("users.php", {username: "asdf"}, function(response) { ok( !response, "asdf is already taken, please try something else" ); start(); }); });});test("validate via remote method", function() { expect(5); stop(); var e = $("#username"); var v = $("#userForm").validate({ rules: { username: { required: true, remote: "users.php" } }, messages: { username: { required: "Please", remote: jQuery.format("{0} in use") } }, submitHandler: function() { ok( false, "submitHandler may never be called when validating only elements"); } }); $().ajaxStop(function() { ok( true, "There needs to be exactly one request." ); equals( 1, v.size(), "There must be one error" ); equals( "asdf in use", v.errorList[0].message ); $().unbind("ajaxStop"); start(); }); ok( !v.element(e), "invalid element, nothing entered yet" ); e.val("asdf"); ok( !v.element(e), "still invalid, because remote validation must block until it returns" );});/*// deferredtest("validate via remote method and serverside message", function() { expect(5); stop(); var e = $("#username"); var v = $("#userForm").validate({ rules: { username: { required: true, remote: "users2.php" } }, messages: { username: { required: "Please" } }, submitHandler: function() { ok( false, "submitHandler may never be called when validating only elements"); } }); $().ajaxStop(function() { ok( true, "There needs to be exactly one request." ); equals( 1, v.size(), "There must be one error" ); equals( "asdf is already taken, please try something else", v.errorList[0].message ); $().unbind("ajaxStop"); start(); }); ok( !v.element(e), "invalid element, nothing entered yet" ); e.val("asdf"); ok( !v.element(e), "still invalid, because remote validation must block until it returns" );});*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -