AutorÃa | Ultima modificación | Ver Log |
(function ($) {"use strict";// This set of validators requires the File API, so if we'ere in a browser// that isn't sufficiently "HTML5"-y, don't even bother creating them. It'll// do no good, so we just automatically pass those tests.var is_supported_browser = !!window.File,fileSizeToBytes,formatter = $.validator.format;/*** Converts a measure of data size from a given unit to bytes.** @param number size* A measure of data size, in the give unit* @param string unit* A unit of data. Valid inputs are "B", "KB", "MB", "GB", "TB"** @return number|bool* The number of bytes in the above size/unit combo. If an* invalid unit is specified, false is returned*/fileSizeToBytes = (function () {var units = ["B", "KB", "MB", "GB", "TB"];return function (size, unit) {var index_of_unit = units.indexOf(unit),coverted_size;if (index_of_unit === -1) {coverted_size = false;} else {while (index_of_unit > 0) {size *= 1024;index_of_unit -= 1;}coverted_size = size;}return coverted_size;};}());/*** Validates that an uploaded file is of a given file type, tested* by it's reported mime string.** @param obj params* An optional set of configuration parmeters. Supported options are:* "types" : array (default ["text"])* An array of file types. This types are loosely checked, so including* "text" in this array of types will cause "text/plain" and "text/css"* to both be excepted. If the selected file matches any of the strings* in this array, validation passes.*/$.validator.addMethod("fileType",function (value, element, params) {var files,types = params.types || ["text"],is_valid = false;if (!is_supported_browser || this.optional(element)) {is_valid = true;} else {files = element.files;if (files.length < 1) {is_valid = false;} else {$.each(types, function (key, value) {is_valid = is_valid || files[0].type.indexOf(value) !== -1;});}}return is_valid;},function (params, element) {return formatter("File must be one of the following types: {0}.",params.types.join(","));});/*** Validates that a file selected for upload is at least a given* file size.** @param obj params* An optional set of configuration parameters. Supported options are:* "unit" : string (default "KB")* The unit of measure of the file size limit is in. Valid inputs* are "B", "KB", "MB" and "GB"* "size" : number (default 100)* The minimum size of the file, in the above units, that the file* must be, to be accepted as "valid"*/$.validator.addMethod("minFileSize",function (value, element, params) {var files,unit = params.unit || "KB",size = params.size || 100,min_file_size = fileSizeToBytes(size, unit),is_valid = false;if (!is_supported_browser || this.optional(element)) {is_valid = true;} else {files = element.files;if (files.length < 1) {is_valid = false;} else {is_valid = files[0].size >= min_file_size;}}return is_valid;},function (params, element) {return formatter("File must be at least {0}{1} large.",[params.size || 100, params.unit || "KB"]);});/*** Validates that a file selected for upload is no loarger than a given* file size.** @param obj params* An optional set of configuration parameters. Supported options are:* "unit" : string (default "KB")* The unit of measure of the file size limit is in. Valid inputs* are "B", "KB", "MB" and "GB"* "size" : number (default 100)* The maximum size of the file, in the above units, that the file* can be to be accepted as "valid"*/$.validator.addMethod("maxFileSize",function (value, element, params) {var files,unit = params.unit || "KB",size = params.size || 100,max_file_size = fileSizeToBytes(size, unit),is_valid = false;if (!is_supported_browser || this.optional(element)) {is_valid = true;} else {files = element.files;if (files.length < 1) {is_valid = false;} else {is_valid = files[0].size <= max_file_size;}}return is_valid;},function (params, element) {return formatter("File cannot be larger than {0}{1}.",[params.size || 100, params.unit || "KB"]);});}(jQuery));