jqueryのvalidateフォーム検証フレームワーク


本文はjqueryの公式の実例に基づいて相応の修正をして、この実例の目的は後でプロジェクトの中でフォームの検証に出会った時に本文の書いた実例に基づいて相応の修正をすることができて、本文はもし何か不当なところがあれば、批判して指摘してください、ありがとうございます!
1.フォームを含める必要があるテストページを作成します.
適切なリソースファイルをインポートするには、次の手順に従います.

<link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />
<script type="text/javascript" src="js/jquery-1.5.1.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>

2.新規ルールおよび設定スタイル:

<script type="text/javascript">
$.validator.setDefaults({
	submitHandler: function() { alert("submitted!"); }
});

$().ready(function() {
	//       ,      
	$("#testForm").validate();
	$("#signupForm").validate({
		rules: {
			firstname : "required",
			lastname  : "required",
			username  : {
				required : true,
				minlength: 5,
				maxlength: 10
			},
			email: {
				required: true,
				email: true
			},
			password  : {
				required : true,
				minlength: 5
			},
			confirm_password : {
				required : true,
				minlength: 5,
				equalTo  : "#password"
			},
			topic: {
				required: "#newsletter:checked",
				minlength: 2
			},
			agree : "required"

		},
		
		messages: {
			firstname : {
				required : "     !",
			},
			lastname : {
				required : "     !"
			},
			username : {
				required : "       ,    5 10     !",
				minlength: "      5   ",
				maxlength: "       10   "
			},
			password : {
				required  : "       ",
				minlength : "     5     !"
			},
			confirm_password : {
				required : "        !",
				minlength: "        5     !",
				equalTo  : "          !"
			},
			email : "           !",
			agree : "    /   "
		}
	});
	
	//      ,         
	var newsletter = $("#newsletter");
	//          
	var inital = newsletter.is(":checked");
	var topics = $("#newsletter_topics")[inital ? "removeClass" : "addClass"]("gray");
	var topicInputs = topics.find("input").attr("disabled", !inital);
	//       ,       
	newsletter.click(function() {
		topics[this.checked ? "removeClass" : "addClass"]("gray");
		topicInputs.attr("disabled", !this.checked);
	});
});
</script>

<style type="text/css">
	#testForm { width: 500px; }
	#testForm label { width: 250px; }
	#testForm label.error, #testForm input.submit { margin-left: 253px; }
	#signupForm { width: 670px; }
	#signupForm label.error {
		margin-left: 10px;
		width: auto;
		display: inline;
	}
	#newsletter_topics label.error {
		display: none;
		margin-left: 103px;
	}
	</style>

3.2つのフォームを作成します.

	<form class="cmxform" id="testForm" method="post" action="">
		<fieldset>
			<legend>Please provide your name, email address (won't be published) and a comment</legend>
			<p>
				<label for="cname">   (*)</label>
				<input id="cname" name="name" class="required" minlength="2" />
			<p>
				<label for="cemail">  (*)</label>
				<input id="cemail" name="email" class="required email" />
			</p>
			<p>
				<label for="ccomment">  (*)</label>
				<textarea id="ccomment" name="comment" class="required"></textarea>
			</p>
			<p>
				<input class="submit" type="submit" value="Submit"/>
			</p>
		</fieldset>
	</form>
	
	<form class="cmxform" id="signupForm" method="get" action="">
		<fieldset>
			<legend>Validating a complete form</legend>
			<p>
				<label for="firstname">Firstname</label>
				<input id="firstname" name="firstname" />
			</p>
			<p>
				<label for="lastname">Lastname</label>
				<input id="lastname" name="lastname" />
			</p>
			<p>
				<label for="username">Username</label>
				<input id="username" name="username" />
			</p>
			<p>
				<label for="password">Password</label>
				<input id="password" name="password" type="password" />
			</p>
			<p>
				<label for="confirm_password">Confirm password</label>
				<input id="confirm_password" name="confirm_password" type="password" />
			</p>
			<p>
				<label for="email">Email</label>
				<input id="email" name="email" />
			</p>
			<p>
				<label for="agree">Please agree to our policy</label>
				<input type="checkbox" class="checkbox" id="agree" name="agree" />
			</p>
			<p>
				<label for="newsletter">I'd like to receive the newsletter</label>
				<input type="checkbox" class="checkbox" id="newsletter" name="newsletter" />
			</p>
			<fieldset id="newsletter_topics">
				<legend>Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo</legend>
				<label for="topic_marketflash">
					<input type="checkbox" id="topic_marketflash" value="marketflash" name="topic" />
					Marketflash
				</label>
				<label for="topic_fuzz">
					<input type="checkbox" id="topic_fuzz" value="fuzz" name="topic" />
					Latest fuzz
				</label>
				<label for="topic_digester">
					<input type="checkbox" id="topic_digester" value="digester" name="topic" />
					Mailing list digester
				</label>
				<label for="topic" class="error">Please select at least two topics you'd like to receive.</label>
			</fieldset>
			<p>
				<input class="submit" type="submit" value="Submit"/>
			</p>
		</fieldset>
	</form>


4.該当するリソースファイルをダウンロードする:添付ファイルを参照.