$.fn.dynamicInput = function(opt){
  var idx = 0;
  var t = $(this);
  var btnBody = $(document.createElement('span'));
  var base = $(document.createElement('span'));
  var setting = { }
  var btn = function(){
   var addBtn = $(document.createElement('input'));
   var delBtn = $(document.createElement('input'));
   $(addBtn).prop("type","button");
   $(delBtn).prop("type","button");
   $(addBtn).val("추가");
   $(delBtn).val("삭제");
   
   $(addBtn).on("click",add);
   $(delBtn).on("click",del);
   $(btnBody).append(addBtn);
   $(btnBody).append(delBtn);
   $(base).append(create());
  }
  var add = function(){
   var  max = setting["max"];
   if($(":"+setting["type"],t).length <= max){
    var div = $(document.createElement('div'));
    t.append($(div).append(create()));
    idx++;
   }else{
    alert('더 이상 추가 할수 없습니다.');
   }
  }
  var del = function(){
   if($(":"+setting["type"],t).length > 1){
    $(":"+setting["type"]+":last",t).remove();
   }
   idx--;
  }
  var create = function(){
   var inpt = $(document.createElement('input'));
   
   var n = setting["fileNm"];
   var t = setting["type"];
   var c = setting["class"];
   
   $(inpt).attr("type",t);
   $(inpt).attr("name",n);
   $(inpt).addClass(c);
   return inpt;
   
  }
  var init = function(){
   t.append(base);
   t.append(btnBody);
   setting["fileNm"] = opt.filenm;
   setting["type"] = opt.inptType===undefined?"text":opt.inptType;
   setting["class"] = opt.cls;
   setting["max"] = opt.max===undefined?3:opt.max;
   btn();
  }
  
  init();
   
  
  return this;
 }  
 
 $("#addFileZone").dynamicInput({
  filenm : "addFile",
  inptType : "file",
  cls : "",
  max : 3
 });


삭제 기능이 빠져서 추가



$.fn.dynamicInput = function(opt){
		var t = $(this);
		var btnBody = $(document.createElement('span'));
		var base = $(document.createElement('span'));
		var dynamicPanel = $(document.createElement('div'));
		$(dynamicPanel).addClass("dynamicPanel");
		var setting = { }
		var classNm = "";
		var addPossibleCnt = 0;
		var btn = function(){
			var addBtn = $(document.createElement('input'));
			var delBtn = $(document.createElement('input'));
			$(addBtn).prop("type","button");
			$(delBtn).prop("type","button");
			$(addBtn).val("추가");
			$(delBtn).val("삭제");
			
			$(addBtn).on("click",add);
			$(delBtn).on("click",del);
			$(btnBody).append(addBtn);
			$(btnBody).append(delBtn);
			$(base).append(create());
		}
		var add = function(){
			if(addPossibleCnt > 0){  
				var div = $(document.createElement('div'));
				$(div).addClass(classNm);
				$(dynamicPanel).append($(div).append(create()));
				
				addPossibleCnt--;
				console.log("등로가능 : "+addPossibleCnt);
			}else{
				alert('더 이상 추가 할수 없습니다.');
			}
			
			
		}
		var del = function(){
			if($(":"+classNm,t).length > 1){
				$("."+classNm+":last",t).parent().remove();
				addPossibleCnt++;
			}
			
		}
		var create = function(){
			var inpt = $(document.createElement('input'));
			
			var n = setting["fileNm"];
			var t = setting["type"];
			var c = setting["class"];
			
			$(inpt).attr("type",t);
			$(inpt).attr("name",n);
			$(inpt).addClass(c);
			return inpt;
			
		}
		var init = function(){
			t.append(base);
			t.append(btnBody);
			setting["fileNm"] = opt.filenm;
			setting["type"] = opt.inptType===undefined?"text":opt.inptType;
			setting["class"] = opt.cls;
			setting["max"] = opt.max===undefined?3:opt.max;
			classNm = "dynamicInpt"+opt.filenm;
			$(base).addClass(classNm);
			btn();
			
			var viewDiv = $(document.createElement('div'));
			
			$(viewDiv).addClass("viewFile");
						
			addPossibleCnt = setting["max"] - (opt.viewData===undefined?0:opt.viewData.length);
			
			t.append(dynamicPanel);
			if(opt.inptType == "file"){
				view();
			}else if(opt.inptType == "text"){
				
			}
			if(addPossibleCnt == 0){
				$(base).hide();
			}
		}
		var viewFile = function(){
			if(opt.viewData != undefined && opt.viewData.length > 0){
				var viewDiv = $(document.createElement('div'));
				$(viewDiv).addClass('viewDiv');
				
				for(var i =0;i

Type=file 에 대한것만 고려됨.. 수정이 필요함..

첨부파일 또는 text 추가 및 삭제