기본 골격
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
function MultiSelector(list_target, max, file_label) {
|
||||
var _base = this;
|
||||
|
||||
this.list_target = list_target;
|
||||
this.id = 0;
|
||||
this.max = max || -1;
|
||||
this.file_label = file_label;
|
||||
|
||||
this.addElement = function (element) {
|
||||
if (element.tagName === 'INPUT' && element.type === 'file') {
|
||||
element.multi_selector = _base;
|
||||
element.onchange = function () {
|
||||
var i = 0;
|
||||
var sErrMsg = "첨부파일 개수는 [" + _base.max + "]까지 첨부할 수 있습니다!";
|
||||
var files_length = 1;
|
||||
|
||||
if (typeof element.files !== "undefined") {
|
||||
files_length = element.files.length;
|
||||
}
|
||||
|
||||
if (_base.max < files_length) {
|
||||
element.value = "";
|
||||
alert(sErrMsg);
|
||||
|
||||
while (_base.list_target.firstChild) {
|
||||
_base.list_target.removeChild(_base.list_target.firstChild);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (document.getElementById("egov_file_view_table") != null) {
|
||||
var sum = files_length + document.getElementById("egov_file_view_table")
|
||||
.getElementsByTagName("img").length;
|
||||
|
||||
if (_base.max < sum) {
|
||||
element.value = "";
|
||||
alert(sErrMsg);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (files_length > 0) {
|
||||
while (_base.list_target.firstChild) {
|
||||
_base.list_target.removeChild(_base.list_target.firstChild);
|
||||
}
|
||||
}
|
||||
|
||||
for (i; i < files_length; i++) {
|
||||
_base.addListRowNew(element, i);
|
||||
}
|
||||
};
|
||||
_base.current_element = element;
|
||||
} else {
|
||||
alert('Error: not a file input element');
|
||||
}
|
||||
};
|
||||
|
||||
this.addListRowNew = function (element, i) {
|
||||
var new_row = document.createElement('div');
|
||||
new_row.className = "file_add_" + i;
|
||||
new_row.innerHTML = "<span>" + element.files[i].name
|
||||
+ "</span> ";
|
||||
_base.list_target.appendChild(new_row);
|
||||
};
|
||||
}
|
||||
|
||||
var EgovMultiFilesChecker = {
|
||||
getFileExtension: function (filename) {
|
||||
if (filename == null) return "";
|
||||
var __fileLen = filename.length;
|
||||
var __lastDot = filename.lastIndexOf('.');
|
||||
if (__lastDot < 0) return "";
|
||||
var __fileExt = filename.substring(__lastDot, __fileLen).toLowerCase();
|
||||
return __fileExt;
|
||||
},
|
||||
|
||||
checkExtensions: function (fileObjId, allowTypes) {
|
||||
if (document.getElementById(fileObjId) == null) return false;
|
||||
|
||||
if (typeof document.getElementById(fileObjId).files !== "undefined") {
|
||||
return this.checkExtensionsHTML5(fileObjId, allowTypes);
|
||||
} else {
|
||||
return this.checkExtensionsOldIE(fileObjId, allowTypes);
|
||||
}
|
||||
},
|
||||
|
||||
checkExtensionsHTML5: function (fileObjId, allowTypes) {
|
||||
var __filelen = document.getElementById(fileObjId).files.length;
|
||||
var __fileObjs = document.getElementById(fileObjId).files;
|
||||
if (__filelen === 0) return true;
|
||||
for (var i = 0; i < __fileObjs.length; i++) {
|
||||
var __fileObj = __fileObjs[i];
|
||||
var __fileExt = this.getFileExtension(__fileObj.name);
|
||||
if (__fileExt === "" || (allowTypes + ".").indexOf(__fileExt + ".") < 0) {
|
||||
alert("허용되지 않는 확장자 입니다.[" + __fileExt + "]");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
checkExtensionsOldIE: function (fileObjId, allowTypes) {
|
||||
var __filelPath = document.getElementById(fileObjId).value;
|
||||
var __fileExt = this.getFileExtension(__filelPath);
|
||||
if (__fileExt === "" || (allowTypes + ".").indexOf(__fileExt + ".") < 0) {
|
||||
alert("2.허용되지 않는 확장자 입니다.[" + __fileExt + "]");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
checkFileSize: function (fileObjId, allowSize) {
|
||||
if (document.getElementById(fileObjId) == null) return false;
|
||||
if (typeof document.getElementById(fileObjId).files !== "undefined") {
|
||||
return this.checkFileSizeHTML5(fileObjId, allowSize);
|
||||
} else {
|
||||
return this.checkFileSizeOldIE(fileObjId, allowSize);
|
||||
}
|
||||
},
|
||||
|
||||
checkFileSizeHTML5: function (fileObjId, allowSize) {
|
||||
var __filelen = document.getElementById(fileObjId).files.length;
|
||||
var __fileObjs = document.getElementById(fileObjId).files;
|
||||
if (__filelen === 0) return true;
|
||||
for (var i = 0; i < __fileObjs.length; i++) {
|
||||
var __fileObj = __fileObjs[i];
|
||||
if (__fileObj.size > allowSize) {
|
||||
alert("허용되지 않는 파일 사이즈 입니다.[" + __fileObj.name
|
||||
+ " : " + __fileObj.size + " bytes / " + allowSize + " bytes]");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
checkFileSizeOldIE: function (fileObjId, allowSize) {
|
||||
alert('구형 브라우저에서는 파일 사이즈 체크를 할수 없습니다.');
|
||||
return true;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user