Browse Source

notEmpty validator now supports checkbox and radio elements

nghuuphuoc 12 years ago
parent
commit
577ae3fb75
4 changed files with 195 additions and 12 deletions
  1. 161 0
      demo/all.html
  2. 24 8
      demo/index.html
  3. 5 2
      src/js/bootstrapvalidate.js
  4. 5 2
      src/js/validator/notEmpty.js

+ 161 - 0
demo/all.html

@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Bootstrap Validate demo</title>
+
+    <link rel="stylesheet" href="../vendor/bootstrap/css/bootstrap.css"/>
+    <!--[if IE 7]>
+    <link rel="stylesheet" href="../vendor/font-awesome/css/font-awesome-ie7.min.css">
+    <![endif]-->
+    <link rel="stylesheet" href="../vendor/font-awesome/css/font-awesome.min.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="../src/js/bootstrapValidate.js"></script>
+    <script type="text/javascript" src="../src/js/validator/emailAddress.js"></script>
+    <script type="text/javascript" src="../src/js/validator/identical.js"></script>
+    <script type="text/javascript" src="../src/js/validator/notEmpty.js"></script>
+    <script type="text/javascript" src="../src/js/validator/regexp.js"></script>
+    <script type="text/javascript" src="../src/js/validator/stringLength.js"></script>
+</head>
+<body>
+    <div class="container">
+        <div class="row">
+            <!-- form: -->
+            <section>
+                <div class="page-header">
+                    <h1>Bootstrap Validate plugin</h1>
+                </div>
+
+                <div class="col-lg-8 col-lg-offset-2">
+                    <form id="defaultForm" method="post" class="form-horizontal">
+                        <fieldset>
+                            <legend>notEmpty validator</legend>
+
+                            <div class="form-group">
+                                <label class="col-lg-3 control-label">Username</label>
+                                <div class="col-lg-9">
+                                    <input type="text" class="form-control" name="username" />
+                                </div>
+                            </div>
+
+                            <div class="form-group">
+                                <div class="col-lg-9 col-lg-offset-3">
+                                    <div class="checkbox">
+                                        <input type="checkbox" name="acceptTerms" /> Accept the terms and policies
+                                    </div>
+                                </div>
+                            </div>
+                        </fieldset>
+
+                        <fieldset>
+                            <legend>emailAddress validator</legend>
+                            <div class="form-group">
+                                <label class="col-lg-3 control-label">Email</label>
+                                <div class="col-lg-5">
+                                    <input type="text" class="form-control" name="email" />
+                                </div>
+                            </div>
+                        </fieldset>
+
+                        <fieldset>
+                            <legend>identical validator</legend>
+
+                            <div class="form-group">
+                                <label class="col-lg-3 control-label">Password</label>
+                                <div class="col-lg-5">
+                                    <input type="password" class="form-control" name="password" />
+                                </div>
+                            </div>
+
+                            <div class="form-group">
+                                <label class="col-lg-3 control-label">Retype password</label>
+                                <div class="col-lg-5">
+                                    <input type="password" class="form-control" name="confirmPassword" />
+                                </div>
+                            </div>
+                        </fieldset>
+
+                        <div class="form-group">
+                            <div class="col-lg-9 col-lg-offset-3">
+                                <button type="submit" class="btn btn-primary">Sign up</button>
+                            </div>
+                        </div>
+                    </form>
+                </div>
+            </section>
+            <!-- :form -->
+        </div>
+    </div>
+
+<script type="text/javascript">
+$(document).ready(function() {
+    $('#defaultForm').bootstrapValidate({
+        fields: {
+            username: {
+                message: 'The username is not valid',
+                validator: {
+                    notEmpty: {
+                        message: 'The username is required and can\'t be empty'
+                    },
+                    stringLength: {
+                        min: 6,
+                        max: 30,
+                        message: 'The username must be more than 6 and less than 30 characters long'
+                    },
+                    regexp: {
+                        regexp: /^[a-zA-Z0-9_\.]+$/,
+                        message: 'The username can only consist of alphabetical, number, dot and underscore'
+                    }
+                }
+            },
+            acceptTerms: {
+                validator: {
+                    notEmpty: {
+                        message: 'You have to accept the terms and policies'
+                    }
+                }
+            },
+            email: {
+                validator: {
+                    notEmpty: {
+                        message: 'The email address is required and can\'t be empty'
+                    },
+                    emailAddress: {
+                        message: 'The input is not a valid email address'
+                    }
+                }
+            },
+            password: {
+                validator: {
+                    notEmpty: {
+                        message: 'The password is required and can\'t be empty'
+                    },
+                    identical: {
+                        field: 'confirmPassword',
+                        message: 'The password and its confirm are not the same'
+                    }
+                }
+            },
+            confirmPassword: {
+                validator: {
+                    notEmpty: {
+                        message: 'The confirm password is required and can\'t be empty'
+                    },
+                    identical: {
+                        field: 'password',
+                        message: 'The password and its confirm are not the same'
+                    }
+                }
+            }
+        },
+        message: 'This value is not valid',
+        iconClass: {
+            valid: 'icon-ok',
+            invalid: 'icon-remove'
+        }
+    });
+});
+</script>
+</body>
+</html>

+ 24 - 8
demo/index.html

@@ -24,28 +24,44 @@
             <!-- form: -->
             <section>
                 <div class="page-header">
-                    <h2>Default Bootstrap form</h2>
+                    <h2>Bootstrap Validate plugin</h2>
                 </div>
 
-                <div class="col-lg-4 col-lg-offset-4">
-                    <form id="defaultForm" method="post">
+                <div class="col-lg-8 col-lg-offset-2">
+                    <form id="defaultForm" method="post" class="form-horizontal">
                         <div class="form-group">
-                            <input type="text" class="form-control" name="username" placeholder="Username" />
+                            <label class="col-lg-3 control-label">Username</label>
+                            <div class="col-lg-5">
+                                <input type="text" class="form-control" name="username" />
+                            </div>
                         </div>
 
                         <div class="form-group">
-                            <input type="text" class="form-control" name="email" placeholder="Email" />
+                            <label class="col-lg-3 control-label">Email address</label>
+                            <div class="col-lg-5">
+                                <input type="text" class="form-control" name="email" />
+                            </div>
                         </div>
 
                         <div class="form-group">
-                            <input type="password" class="form-control" name="password" placeholder="Password" />
+                            <label class="col-lg-3 control-label">Password</label>
+                            <div class="col-lg-5">
+                                <input type="password" class="form-control" name="password" />
+                            </div>
                         </div>
 
                         <div class="form-group">
-                            <input type="password" class="form-control" name="confirmPassword" placeholder="Retype password" />
+                            <label class="col-lg-3 control-label">Retype password</label>
+                            <div class="col-lg-5">
+                                <input type="password" class="form-control" name="confirmPassword" />
+                            </div>
                         </div>
 
-                        <button type="submit" class="btn btn-primary">Sign up</button>
+                        <div class="form-group">
+                            <div class="col-lg-9 col-lg-offset-3">
+                                <button type="submit" class="btn btn-primary">Sign up</button>
+                            </div>
+                        </div>
                     </form>
                 </div>
             </section>

+ 5 - 2
src/js/bootstrapvalidate.js

@@ -75,10 +75,13 @@
                     return;
                 }
 
-                var that = this, fieldElement = $(foundFields[0]);
+                var that         = this,
+                    fieldElement = $(foundFields[0]),
+                    type         = $(fieldElement).attr('type'),
+                    event        = ('checkbox' == type) ? 'change' : 'keyup';
 
                 $(fieldElement)
-                    .on('keyup', function() {
+                    .on(event, function() {
                         var validators = that.options.fields[field].validator;
                         for (var validatorName in validators) {
                             if (!$.bootstrapValidator.validator[validatorName]) {

+ 5 - 2
src/js/validator/notEmpty.js

@@ -10,8 +10,11 @@
              * @returns {boolean}
              */
             validate: function(validateInstance, element, options) {
-                var value = $.trim($(element).val());
-                return (value != '');
+                var $element = $(element),
+                    type     = $element.attr('type');
+                return ('checkbox' == type || 'radio' == type)
+                            ? $element.is(':checked')
+                            : ($.trim($(element).val()) != '');
             }
         }
     });