2011-09-14 9 views
0

次のコードを使用して、リフレッシュせずにフォームの送信時にajaxファイルをアップロードできるiframeを有効にします。onsubmitとは対照的にAJAXファイルアップロードonchangeを変更する

ユーザがファイルを選択したとき、これはautmatically init()機能をトリガするために、予想通り、私がやりたい何

window.onload=init; 
function init() { 
document.getElementById('form').onsubmit=function() { 
    document.getElementById('form').target = 'iframe'; 
      } 
     } 

が同じものである動作しますが、ファイルのフィールド入力の「onchange」、すなわちアップロードしてください。私はこのコードで試した:

document.getElementById('file').onchange=function(){... 

これは動作しない、と私は完全に立ち往生しています。何か案は?

感謝

私は .live()のようなものは、あなたがそれを使用する方法についての詳細情報が必要な場合はコメントし、うまくいけば、あなたの問題を解決すると思います

答えて

1

これは

<script type="text/javascript"> 

window.onload = function() { 

    // add old fashioned but reliable event handler 
    document.getElementById('file_input').onchange = function() { 
     // submit the form that contains the target element 
     this.form.submit(); 
    } 
} 

</script> 

<iframe name="my_iframe"></iframe> 

<form target="my_iframe" 
     action="your/file.ext" 
     method="post" 
     enctype="multipart/formdata"> 

    <input type="file" name="my_file" id="file_input"> 

    <!-- for no js users --> 
    <noscript> 
     <br/> 
     <input type="submit"> 
    </noscript> 

</form> 
+0

彼はonchangeが動作しなかったとは言わなかった? – SAFAD

+0

OPは何がうまくいかないかについて明確ではありませんでした。しかし、上記のコードは動作します。 – meouw

0

...

+0

が面白いですね、私は、Cuじゃないあなたのために働く必要がありますjqueryを使用しています。あなたはjqueryがこの小さな機能の過度のように思えるので、これをバニラのjavascriptで動作させる方法を知っていますか? – tcnarss

+0

あなたはjqueryなしで周りの方法を認識していない、申し訳ありません...あなたはGoogleに、 "javascript onfileselect"または何かをしたいかもしれない – SAFAD

0

ファイル入力要素にIDを付けて:

$(document).ready(function(){ 
    $(element).change(function(e){ 
    fileInfo = e.currentTarget.files[0]; 
    init(); 
    }); 
}); 
関連する問題