2014-01-30 130 views
0

我有这样的脚本,追加了新的基于elment用户输入粘贴输入类型的文件值输入型文本

var tmp; 
$('#add').click(function(){ 

      var galer=parseInt($('#many').val()); 

       for(var h=1;h<=tmp;h++){ 
        $(".af_"+h).remove();      
       } 

       for(var x=1;x<=galer;x++){ 
        $("#kontenPlus").append("<input type='file' id='photo_"+x+"'> <input type='text' id='src_"+x+"'>"); 

       } 

       tmp=galer;     

     }); 

for(var u=1;u<=tmp;u++){    
    $('#photo_'+u).change(function(){ 
      $('#src_'+x).val($(this).val()); 
    }); 
} 

这个网站码:

<input type='text' id='many'><div id='add'>Add element</div> 
<div id='kontenPlus'></div> 

我要问,为什么值'#photo_+x',是不是放在'#src_'+x,功能是否可以循环?

LINK:http://jsfiddle.net/rizalfarez/V5AdP/3/

+0

为什么 '+ X#photo_',不要放在价值 '#src _' + X ???? –

+0

更改$('。src _'+ x).val($(this).val());到$('#src _'+ x).val($(this).val()); –

回答

0

因为这些元素被动态创建,您将需要委托事件监听像

$(window).on("change", function() { 
    // 
    var id = $(this).id; 
    // 
    if (id.indexOf("photo") === 0) { 
0

该文本框的值没有更新的原因是因为他们是动态创建,所以更改事件不会绑定到它们。

我已经改变了你的代码和优化它有点像这样:

var tmp; 
$('#add').click(function(){ 
    var galer = parseInt($('#many').val()); 

    $('.af').remove();      

    for(var x=1;x<=galer;x++) 
     $('#kontenPlus').append('<div class="af"><input type="file" id="photo_'+x+'"><input type="text" id="src_'+x+'"></div>'); 

    $('[id^="photo_"]').each(function(){ 
     $(this).change(function(){ 
      $(this).next().val($(this).val()); 
     }); 
    }); 
});