|
|
@@ -0,0 +1,132 @@
|
|
|
+<!DOCTYPE html>
|
|
|
+<html>
|
|
|
+<head>
|
|
|
+ <title>BootstrapValidator demo</title>
|
|
|
+
|
|
|
+ <link rel="stylesheet" href="../vendor/bootstrap/css/bootstrap.css"/>
|
|
|
+ <link rel="stylesheet" href="../dist/css/bootstrapValidator.css"/>
|
|
|
+
|
|
|
+ <script type="text/javascript" src="../vendor/jquery/jquery-1.10.2.min.js"></script>
|
|
|
+ <script type="text/javascript" src="../vendor/bootstrap/js/bootstrap.min.js"></script>
|
|
|
+ <script type="text/javascript" src="../dist/js/bootstrapValidator.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),
|
|
|
+ $parent = $that.parents('.form-group'),
|
|
|
+ $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').bootstrapValidator('removeField', fieldName);
|
|
|
+
|
|
|
+ // Enable the Add button
|
|
|
+ $that.parent().removeClass('disabled');
|
|
|
+
|
|
|
+ // Remove element
|
|
|
+ $newRow.remove();
|
|
|
+ });
|
|
|
+
|
|
|
+ // Add new field
|
|
|
+ $('#contactForm').bootstrapValidator('addField', fieldName, {
|
|
|
+ message: 'The phone number is not valid',
|
|
|
+ validators: {
|
|
|
+ digits: {
|
|
|
+ message: 'The value can contain only digits'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ $('#contactForm')
|
|
|
+ .bootstrapValidator({
|
|
|
+ message: 'This value is not valid',
|
|
|
+ feedbackIcons: {
|
|
|
+ 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('error.field.bv', function(e, field, $field) {
|
|
|
+ console.log(field, $field, '-->error');
|
|
|
+ })
|
|
|
+ .on('success.field.bv', function(e, field, $field) {
|
|
|
+ console.log(field, $field, '-->success');
|
|
|
+ });
|
|
|
+ });
|
|
|
+</script>
|
|
|
+</body>
|
|
|
+</html>
|