Blame view

frontend/web/js/validation/src/additional/accept.js 1.14 KB
18b850c7   Administrator   Importers CRUD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
  // Accept a value from a file input based on a required mimetype
  $.validator.addMethod("accept", function(value, element, param) {
  	// Split mime on commas in case we have multiple types we can accept
  	var typeParam = typeof param === "string" ? param.replace(/\s/g, "").replace(/,/g, "|") : "image/*",
  	optionalValue = this.optional(element),
  	i, file;
  
  	// Element is optional
  	if (optionalValue) {
  		return optionalValue;
  	}
  
  	if ($(element).attr("type") === "file") {
  		// If we are using a wildcard, make it regex friendly
  		typeParam = typeParam.replace(/\*/g, ".*");
  
  		// Check if the element has a FileList before checking each file
  		if (element.files && element.files.length) {
  			for (i = 0; i < element.files.length; i++) {
  				file = element.files[i];
  
  				// Grab the mimetype from the loaded file, verify it matches
  				if (!file.type.match(new RegExp( "\\.?(" + typeParam + ")$", "i"))) {
  					return false;
  				}
  			}
  		}
  	}
  
  	// Either return true because we've validated each file, or because the
  	// browser does not support element.files and the FileList feature
  	return true;
  }, $.validator.format("Please enter a value with a valid mimetype."));