Browse Source

#130: Add an example for adding/removing field

nghuuphuoc 11 years ago
parent
commit
ed2771669e
1 changed files with 132 additions and 0 deletions
  1. 132 0
      demo/dynamic2.html

+ 132 - 0
demo/dynamic2.html

@@ -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>