2011-09-14 37 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(); 
    }); 
});