简体   繁体   English

使用 JS 或 Jquery 向动态创建的元素添加事件

[英]adding events to dynamically created elements using JS or Jquery

I am creating a div block dynamically.我正在动态创建一个 div 块。 In the div, i am having text fields and one file field and one hyperlink.在 div 中,我有文本字段、一个文件字段和一个超链接。 on clicking the hyperlink, the div tag will be removed from its parent.单击超链接时,div 标签将从其父标签中删除。 coming to the file field, i want to add onchange event to the file, which is not working for me.来到文件字段,我想向文件添加 onchange 事件,这对我不起作用。 Please check my code and correct me if i am wrong?如果我错了,请检查我的代码并纠正我? this is my code:这是我的代码:

<div id="incdiv" class="incdiv" name="incdiv">
<div id="increpeatdiv">
 <input type="file" class="" id="ifile" name="ifile" onchange="return filelogValidation('ifile')"/>
 </div>
  <a href='#' class="fw" onclick="repeat()">add one more Incident</a>
 </div>
 
 <script>
  function repeat(){
     var p=document.getElementById('incdiv')
      var element = document.createElement('div');
      element.id='increpeatdiv'+p.children.length;
      element.innerHTML='<input type="file" class="" id="ifile" name="ifile" onchange="return filelogValidation('ifile')"/>'+
        '<a href='#' class="fw" onclick="delete(this.parentNode.id)">Delete Incident</a>;';
        p.appendChild(element);
  }
  function delete(a){
   var p=document.getElementById(a)
  var h=document.getElementById('incdiv');
  h.removeChild(p);
  }
  function filelogValidation(input){
  var fileInput =   document.getElementById(input);        
            var filePath = fileInput.value;      
            var allowedExtensions =  
                    /(\.txt)$/i;  
                    if (!allowedExtensions.exec(filePath)) { 
                alert('Invalid file type. Please Upload .txt format'); 
                fileInput.value = ''; 
                return false; 
            }  
            else  return true;}
  }

I am guessing the problem to be of id "ifile".我猜问题出在 id“ifile”上。 But I dont know how to solve it.但我不知道如何解决它。 Can somebody help me?有人可以帮我吗?

Check this检查这个

 <div id="incdiv" class="incdiv" name="incdiv"> <div id="increpeatdiv"> <input type="file" class="" id="ifile" name="ifile" onchange="return filelogValidation('ifile')"/> </div> <a href='#' class="fw" onclick="repeat()">add one more Incident</a> </div> <script> var i = 1; //index for doing identity to ifiles like ifile_1, ifile_2... function repeat(){ var p=document.getElementById('incdiv') var element = document.createElement('div'); element.id='increpeatdiv_'+i; element.innerHTML="<input type=\"file\" class=\"\" id=\"ifile_"+i+"\" name=\"ifile\" onchange=\"return filelogValidation(this.id)\"/>"+ "<a href='#' class=\"fw\" onclick=\"delete_(this.parentNode.id)\">Delete Incident</a>;"; p.appendChild(element); i++; } function delete_(a){ var p=document.getElementById(a) var h=document.getElementById('incdiv'); h.removeChild(p); } function filelogValidation(input){ var fileInput = document.getElementById(input); var filePath = fileInput.value; var allowedExtensions = /(\.txt)$/i; if (.filePath.match(allowedExtensions)) { alert('Invalid file type. Please Upload;txt format'). fileInput;value = ''; return false; } else return true; } </script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM