2011-09-14 72 views
0

我正在使用下面的代碼來實現一個iframe,它允許在沒有刷新的情況下提交表單時上傳ajax文件。AJAX文件上傳onchange,而不是onsubmit

可正常工作

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

我想什麼做的是同樣的事情,但文件中的字段輸入「onchange」,即當用戶選擇了一個文件,以autmatically觸發init()功能並因此上傳文件。我試着用這段代碼:

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

這不起作用,我完全卡住了。有任何想法嗎?

非常感謝

回答

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

我認爲像.live()將解決您的問題,我們希望,如果你想了解如何使用它的詳細信息註釋...

+0

聽起來很有趣,但我不CU rrently使用jQuery。你知道一種方法來獲得這個工作在香草JavaScript作爲jquery似乎對這個小功能矯枉過正。 – tcnarss

+0

不知道沒有jQuery的方式,抱歉...你可能想谷歌,「javascript onfileselect」或什麼 – SAFAD

0

給文件輸入元素的ID和:

$(document).ready(function(){ 
    $(element).change(function(e){ 
    fileInfo = e.currentTarget.files[0]; 
    init(); 
    }); 
});