143 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html lang="en">
 | 
						|
<head>
 | 
						|
	<meta charset="utf-8">
 | 
						|
	<title>jQuery validation plug-in - dynamic forms demo</title>
 | 
						|
	<link rel="stylesheet" media="screen" href="css/screen.css">
 | 
						|
	<script src="../lib/jquery.js"></script>
 | 
						|
	<script src="../dist/jquery.validate.js"></script>
 | 
						|
	<script>
 | 
						|
	// only for demo purposes
 | 
						|
	$.validator.setDefaults({
 | 
						|
		submitHandler: function() {
 | 
						|
			alert("submitted!");
 | 
						|
		}
 | 
						|
	});
 | 
						|
	$.validator.messages.max = jQuery.validator.format("Your totals mustn't exceed {0}!");
 | 
						|
 | 
						|
	$.validator.addMethod("quantity", function(value, element) {
 | 
						|
		return !this.optional(element) && !this.optional($(element).parent().prev().children("select")[0]);
 | 
						|
	}, "Please select both the item and its amount.");
 | 
						|
 | 
						|
	$().ready(function() {
 | 
						|
		$("#orderform").validate({
 | 
						|
			errorPlacement: function(error, element) {
 | 
						|
				error.appendTo(element.parent().next());
 | 
						|
			},
 | 
						|
			highlight: function(element, errorClass) {
 | 
						|
				$(element).addClass(errorClass).parent().prev().children("select").addClass(errorClass);
 | 
						|
			}
 | 
						|
		});
 | 
						|
 | 
						|
		var template = jQuery.validator.format($.trim($("#template").val()));
 | 
						|
 | 
						|
		function addRow() {
 | 
						|
			$(template(i++)).appendTo("#orderitems tbody");
 | 
						|
		}
 | 
						|
 | 
						|
		var i = 1;
 | 
						|
		// start with one row
 | 
						|
		addRow();
 | 
						|
		// add more rows on click
 | 
						|
		$("#add").click(addRow);
 | 
						|
 | 
						|
		// check keyup on quantity inputs to update totals field
 | 
						|
		$("#orderform").on("keyup", "input.quantity", function(event) {
 | 
						|
			var totals = 0;
 | 
						|
			$("#orderitems input.quantity").each(function() {
 | 
						|
				totals += +this.value;
 | 
						|
			});
 | 
						|
			$("#totals").attr("value", totals).valid();
 | 
						|
		});
 | 
						|
 | 
						|
	});
 | 
						|
	</script>
 | 
						|
	<style>
 | 
						|
	form.cmxform {
 | 
						|
		width: 50em;
 | 
						|
	}
 | 
						|
	em.error {
 | 
						|
		background:url("images/unchecked.gif") no-repeat 0px 0px;
 | 
						|
		padding-left: 16px;
 | 
						|
	}
 | 
						|
	em.success {
 | 
						|
		background:url("images/checked.gif") no-repeat 0px 0px;
 | 
						|
		padding-left: 16px;
 | 
						|
	}
 | 
						|
	form.cmxform label.error {
 | 
						|
		margin-left: auto;
 | 
						|
		width: 250px;
 | 
						|
	}
 | 
						|
	form.cmxform input.submit {
 | 
						|
		margin-left: 0;
 | 
						|
	}
 | 
						|
	em.error {
 | 
						|
		color: black;
 | 
						|
	}
 | 
						|
	#warning {
 | 
						|
		display: none;
 | 
						|
	}
 | 
						|
	select.error {
 | 
						|
		border: 1px dotted red;
 | 
						|
	}
 | 
						|
	</style>
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
<h1 id="banner"><a href="https://jqueryvalidation.org/">jQuery Validation Plugin</a> Demo</h1>
 | 
						|
<div id="main">
 | 
						|
	<textarea style="display:none" id="template">
 | 
						|
		<tr>
 | 
						|
			<td>
 | 
						|
				<label>{0}. Item</label>
 | 
						|
			</td>
 | 
						|
			<td class='type'>
 | 
						|
				<select name="item-type-{0}">
 | 
						|
					<option value="">Select...</option>
 | 
						|
					<option value="0">Learning jQuery</option>
 | 
						|
					<option value="1">jQuery Reference Guide</option>
 | 
						|
					<option value="2">jQuery Cookbook</option>
 | 
						|
					<option vlaue="3">jQuery In Action</option>
 | 
						|
					<option value="4">jQuery For Designers</option>
 | 
						|
				</select>
 | 
						|
			</td>
 | 
						|
			<td class='quantity'>
 | 
						|
				<input size='4' class="quantity" min="1" id="item-quantity-{0}" name="item-quantity-{0}">
 | 
						|
			</td>
 | 
						|
			<td class='quantity-error'></td>
 | 
						|
		</tr>
 | 
						|
	</textarea>
 | 
						|
	<form id="orderform" class="cmxform" method="get" action="foo.html">
 | 
						|
		<h2 id="summary"></h2>
 | 
						|
		<fieldset>
 | 
						|
			<legend>Example with custom methods and heavily customized error display</legend>
 | 
						|
			<table id="orderitems">
 | 
						|
				<tbody>
 | 
						|
				</tbody>
 | 
						|
				<tfoot>
 | 
						|
					<tr>
 | 
						|
						<td colspan="2">
 | 
						|
							<label>Totals (max 25)</label>
 | 
						|
						</td>
 | 
						|
						<td class="totals">
 | 
						|
							<input id="totals" name="totals" value="0" max="25" readonly="readonly" size='4'>
 | 
						|
						</td>
 | 
						|
						<td class="totals-error"></td>
 | 
						|
					</tr>
 | 
						|
					<tr>
 | 
						|
						<td colspan="2"> </td>
 | 
						|
						<td>
 | 
						|
							<input class="submit" type="submit" value="Submit">
 | 
						|
						</td>
 | 
						|
					</tr>
 | 
						|
				</tfoot>
 | 
						|
			</table>
 | 
						|
		</fieldset>
 | 
						|
	</form>
 | 
						|
	<button id="add">Add another input to the form</button>
 | 
						|
	<h1 id="warning">Your form contains tons of errors! Please try again.</h1>
 | 
						|
	<p><a href="index.html">Back to main page</a>
 | 
						|
	</p>
 | 
						|
</div>
 | 
						|
</body>
 | 
						|
</html>
 |