1document.addEventListener('DOMContentLoaded', function () { 2 fileSelectComponent_init(); 3 4 // Custom kentico-form- events are dispatched via /Kentico/Scripts/forms/updatableFormHelper.js 5 document.addEventListener('kentico-form-update-after', function (e) { 6 fileSelectComponent_init(); 7 }, false); 8 9 document.addEventListener('kentico-form-submitted', function (e) { 10 fileSelectComponent_init(); 11 }, false); 12}, false); 13 14function fileSelectComponent_init() { 15 var dateSelects = document.querySelectorAll('input[type="file"][data-fieldtype="fileselect"]'); 16 dateSelects.forEach(ds => { 17 ds.onchange = fileSelectComponent_onchangeHandler; 18 }); 19} 20 21function fileSelectComponent_onchangeHandler() { 22 var fieldName = this.dataset.fieldname; 23 var errorLabel = document.querySelector('div[class^="field-validation-"][data-valmsg-for$="' + fieldName + '.FileSelected"]'); 24 25 if (!fileSelectComponent_isValidFileExtension(this)) { 26 this.value = ""; 27 errorLabel.innerHTML = this.dataset.accepterrormessage; 28 errorLabel.className = 'field-validation-error'; 29 return; 30 } 31 32 if (!fileSelectComponent_isLessThanMaxFileSize(this)) { 33 this.value = ""; 34 errorLabel.innerHTML = this.dataset.maxfilesizeerrormessage; 35 errorLabel.className = 'field-validation-error'; 36 return; 37 } 38 39 errorLabel.innerHTML = ''; 40 errorLabel.className = 'field-validation-valid'; 41} 42 43function fileSelectComponent_isValidFileExtension(fileInputElement) { 44 var acceptList = fileInputElement.getAttribute("accept"); 45 46 if (fileInputElement.value === "" || acceptList === null) 47 return true; 48 49 if (fileInputElement.value.length < 5 || !fileInputElement.value.includes(".")) 50 return false; 51 52 var fileExtension = fileInputElement.value.substr(fileInputElement.value.length - 4, 4); 53 54 return acceptList.includes(fileExtension); 55} 56 57function fileSelectComponent_isLessThanMaxFileSize(fileInputElement) { 58 if (fileInputElement.value === "") 59 return true; 60 61 var maxFileSizeMB = fileInputElement.dataset.maxfilesizemb; 62 if (maxFileSizeMB === undefined) 63 maxFileSizeMB = 5; // default to 5MB 64 65 if (maxFileSizeMB === 0) 66 return true; 67 68 var maxMBs = parseInt(maxFileSizeMB); 69 var maxBytes = maxMBs * 1024 * 1024; 70 71 return (fileInputElement.files[0].size < maxBytes); 72}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.