formvalidation
Version:
The best jQuery plugin to validate form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit and custom frameworks
132 lines (120 loc) • 5.3 kB
HTML
<html>
<head>
<title>FormValidation demo</title>
<link rel="stylesheet" href="../vendor/bootstrap/css/bootstrap.css"/>
<link rel="stylesheet" href="../dist/css/formValidation.css"/>
<script type="text/javascript" src="../vendor/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../vendor/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../dist/js/formValidation.js"></script>
<script type="text/javascript" src="../dist/js/framework/bootstrap.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<div class="page-header">
<h2>Dynamic fields</h2>
</div>
<form id="contactForm" method="post" class="form-horizontal" action="target.php">
<div class="form-group">
<label class="col-lg-3 control-label">Phone number</label>
<div class="col-lg-6">
<input class="form-control" type="text" name="phone" />
</div>
<div class="col-lg-3">
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">Add more <span class="caret"></span></button>
<ul class="dropdown-menu" role="menu">
<li><a href="#" class="addPhoneButton" data-name="phone_iphone">iPhone</a></li>
<li><a href="#" class="addPhoneButton" data-name="phone_home">Home</a></li>
<li><a href="#" class="addPhoneButton" data-name="phone_office">Office</a></li>
</ul>
</div>
</div>
</div>
<!-- Template for dynamic field -->
<div class="form-group" id="template" style="display: none;">
<label class="col-lg-3 control-label"></label>
<div class="col-lg-6">
<input class="form-control" type="text" />
</div>
<div class="col-lg-3">
<button type="button" class="btn btn-link removeButton">Remove</button>
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-3 col-lg-3">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$('.addPhoneButton').on('click', function() {
var $that = $(this),
$template = $('#template'),
$newRow = $template.clone().removeAttr('id').insertBefore($template).show();
$that.parent().addClass('disabled');
// Set the label and field name
var fieldName = $that.attr('data-name');
$newRow
.find('.control-label')
.html($that.html())
.end()
.find('input')
.attr('name', fieldName)
.end()
.on('click', '.removeButton', function() {
// Remove field when clicking the Remove button
$('#contactForm').formValidation('removeField', fieldName);
// Enable the Add button
$that.parent().removeClass('disabled');
// Remove element
$newRow.remove();
});
// Add new field
$('#contactForm').formValidation('addField', fieldName, {
message: 'The phone number is not valid',
validators: {
digits: {
message: 'The value can contain only digits'
}
}
});
});
$('#contactForm')
.formValidation({
message: 'This value is not valid',
icon: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: {
phone: {
message: 'The phone number is not valid',
validators: {
notEmpty: {
message: 'The phone number is required'
},
digits: {
message: 'The value can contain only digits'
}
}
}
}
})
.on('err.field.fv', function(e, data) {
console.log(data.field, data.element, '-->error');
})
.on('success.field.fv', function(e, data) {
console.log(data.field, data.element, '-->success');
});
});
</script>
</body>
</html>