UNPKG

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
<!DOCTYPE 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>