2017-12-08 25 views
0

デバッグしてエラーを検索しようとしていますが、変更イベントが入力フィールドで機能していません。デバッグ時にjqueryの変更イベントにブレークポイントを設定しましたが、デバッグのためにブレークポイントで停止していない理由を見つけることができません。変更イベントが入力フィールドで機能していません

ここでは、動的に生成されるhtmlパーツのみを示します。

var p = $('<input type="file" ID="flImage" name="flImage" runat="server" />'); 
       $("#mainTbl").append(p); 

スクリプト

<script type="text/javascript">  
      $(function() { 
       var reader = new FileReader(); 
       var fileName; 
       var contentType; 
//tried all three trick to envoke change function but not work 
       //$('input[name=flImage]').change(function() { 
       $("<input type='file' name='flImage' ID='flImage'/>").change(function() { 
       //$("input[name=flImage]").on("change", function(){ 
        if (typeof (FileReader) != "undefined") { 
         var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.jpg|.jpeg|.gif|.png|.bmp)$/; 
         $($(this)[0].files).each(function() { 
          var file = $(this); 
          if (regex.test(file[0].name.toLowerCase())) { 
           fileName = file[0].name; 
           contentType = file[0].type; 
           reader.readAsDataURL(file[0]); 
          } else { 
           alert(file[0].name + " is not a valid image file."); 
           return false; 
          } 
         }); 
        } else { 
         alert("This browser does not support HTML5 FileReader."); 
        } 
       });  
</script> 

私は入力要素 にアクセスするには、このようにしようとしているコメントからのショーの多くのアドバイスは、それがenter image description here

+1

動的要素の場合、最も近い静的コンテナにイベントを委譲します: '$("#mainTbl ")on( 'change'、 'input [name = flImage]'、function(){...});' https: //learn.jquery.com/events/event-delegation/ –

+1

[動的に作成された要素のイベントバインディング?](https://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-要素) – LinkinTED

+0

セレクタ '$(" ') 'は完全に間違っています。私はあなたが '$( '#flImage')' – Liam

答えて

0

var p = $('<input type="file" ID="flImage" name="flImage" runat="server" />'); 
 
       $("#mainTbl").append(p); 
 
       
 
       
 
$(function() { 
 
     var reader = new FileReader(); 
 
     var fileName; 
 
     var contentType; 
 

 
     $("input[name=flImage]").on("change", function(){ 
 
      if (typeof (FileReader) != "undefined") { 
 
       var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.jpg|.jpeg|.gif|.png|.bmp)$/; 
 
       $($(this)[0].files).each(function() { 
 
        var file = $(this); 
 
        if (regex.test(file[0].name.toLowerCase())) { 
 
         fileName = file[0].name; 
 
         contentType = file[0].type; 
 
         reader.readAsDataURL(file[0]); 
 
        } else { 
 
         alert(file[0].name + " is not a valid image file."); 
 
         return false; 
 
        } 
 
       }); 
 
      } else { 
 
       alert("This browser does not support HTML5 FileReader."); 
 
      } 
 
     });  
 
    });    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="mainTbl"></div>
下記OK :div.main main-raised > div#pdfFormInsideL1 > table#mainTbl > tbody >tr>'input[name=flImage] イメージしたら

+0

コードを試しましたか? – LinkinTED

+0

@LinkinTEDはい、 'Run code snippet'をクリックした後でもここに入れることができます –

+0

これは動作しません。要素を動的に追加する場合は、イベントの委任が必要です。https://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elements – LinkinTED

関連する問題