2012-03-16 14 views
0

"ファイルの選択"、 "アップロード"、 "その他のファイルの追加"

ファイル入力の変更時に[アップロード]ボタンの属性を無効にしようとしています)。最初の[アップロード]ボタンでは機能しますが、2番目の[アップロード]ボタンでは機能しません。 なぜですか?

お手伝いがありがとうございました。

私のjqueryのコードは次のとおりです。

$(document).ready(function() { 

$('input[type=file]').change(function(){ 
    $(this).next().removeAttr('disabled'); 
}); 

$('.add').click(function() { 
    var num = $('input[type=file]').length; 

    newNum = num + 1; 
    if (newNum >= 4){ 
     $('.add').hide(); 
     } 

    $('#addanother').append("<form method='POST'>"); 
    $('#photo1').clone().attr('id','photo'+newNum).appendTo('#addanother'); 
    $('#upload'+num).clone().attr('id','upload'+newNum).attr('disabled','disabled').appendTo('#addanother'); 
    $('#addanother').append('</form><br />'); 

    }); 
}); 

私のhtmlコードは次のとおりです。

<form method='POST' enctype="multipart/form-data"> 
<input type='file' class='fileinput' id='photo1'> 

<input type='button' id='upload1' name='upload1' value='Upload' disabled='disabled'> 
</form> 

<div id='addanother'></div> 

<input type='button' class='add' id='add1' value='Add file'> 
+0

を使用してください)http://api.jquery.com/prop/ –

+0

こんにちはジェイ、私が探していますそれにどうもありがとう。私は、removeAttrがそのように振舞うのはかなり混乱していることがわかります。その行動には論理的な理由はありません。 – eric01

答えて

0

$('input[type=file]').change(function(){ 
    $(this).next().removeAttr('disabled'); 
}); 

を交換してください。小道具を(使用して見て.on代わりremoveAttrの、構文の下に

$(document).on('change', 'input[type=file]', function(){ 
    $(this).next().removeAttr('disabled'); 
}); 

と削除、

$('input[type=file]').change(function(){ 
    $(this).next().removeAttr('disabled'); 
}); 
+0

それはうまくいきました、私はon()について知らなかった、私はこれについて読んでいます。それに感謝し、私にAcceptedの答えを知らせるために。私が「このポストはあなたにとって有用だったのですか?私はそれを間違ってやっていた! よろしく – eric01

2

あなたが最初にDOMを変更して実現しませんでした。

はあなたが動的ので、イベントハンドラをバインドされていなかった第二アップロードボタンを追加している

$(document).on({ 
    change: function() { 
     $(this).next().removeAttr('disabled'); 
    } 
}, 'input[type=file]'); 
+0

これは.on(events-map [、selector] [、data])の構文です。 +1 –

+0

はい、それは大変ありがとうございます!よろしくです – eric01

関連する問題