UNPKG

bootstrapvalidator

Version:

The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3

89 lines (79 loc) 3.85 kB
(function($) { $.fn.bootstrapValidator.i18n.file = $.extend($.fn.bootstrapValidator.i18n.file || {}, { 'default': 'Please choose a valid file' }); $.fn.bootstrapValidator.validators.file = { html5Attributes: { extension: 'extension', maxfiles: 'maxFiles', minfiles: 'minFiles', maxsize: 'maxSize', minsize: 'minSize', maxtotalsize: 'maxTotalSize', mintotalsize: 'minTotalSize', message: 'message', type: 'type' }, /** * Validate upload file. Use HTML 5 API if the browser supports * * @param {BootstrapValidator} validator The validator plugin instance * @param {jQuery} $field Field element * @param {Object} options Can consist of the following keys: * - extension: The allowed extensions, separated by a comma * - maxFiles: The maximum number of files * - minFiles: The minimum number of files * - maxSize: The maximum size in bytes * - minSize: The minimum size in bytes * - maxTotalSize: The maximum size in bytes for all files * - minTotalSize: The minimum size in bytes for all files * - message: The invalid message * - type: The allowed MIME type, separated by a comma * @returns {Boolean} */ validate: function(validator, $field, options) { var value = $field.val(); if (value === '') { return true; } var ext, extensions = options.extension ? options.extension.toLowerCase().split(',') : null, types = options.type ? options.type.toLowerCase().split(',') : null, html5 = (window.File && window.FileList && window.FileReader); if (html5) { // Get FileList instance var files = $field.get(0).files, total = files.length, totalSize = 0; if ((options.maxFiles && total > parseInt(options.maxFiles, 10)) // Check the maxFiles || (options.minFiles && total < parseInt(options.minFiles, 10))) // Check the minFiles { return false; } for (var i = 0; i < total; i++) { totalSize += files[i].size; ext = files[i].name.substr(files[i].name.lastIndexOf('.') + 1); if ((options.minSize && files[i].size < parseInt(options.minSize, 10)) // Check the minSize || (options.maxSize && files[i].size > parseInt(options.maxSize, 10)) // Check the maxSize || (extensions && $.inArray(ext.toLowerCase(), extensions) === -1) // Check file extension || (files[i].type && types && $.inArray(files[i].type.toLowerCase(), types) === -1)) // Check file type { return false; } } if ((options.maxTotalSize && totalSize > parseInt(options.maxTotalSize, 10)) // Check the maxTotalSize || (options.minTotalSize && totalSize < parseInt(options.minTotalSize, 10))) // Check the minTotalSize { return false; } } else { // Check file extension ext = value.substr(value.lastIndexOf('.') + 1); if (extensions && $.inArray(ext.toLowerCase(), extensions) === -1) { return false; } } return true; } }; }(window.jQuery));