2014-01-30 171 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()); 
     }); 
    }); 
});