2011-08-20 32 views
8

在此post之后,我有另一个发行者 - 当我点击文本链接时,如何触发输入中的浏览文件?jquery触发器:当我点击文本链接时,如何触发输入中的浏览文件?

基本上我想隐藏表单,但是当你点击上传文本链接时它会被触发。

<a href="#" class="upload">upload</a> 
<form action="upload.php" method="post" enctype="multipart/form-data" id="myForm" style="display:none;"> 
    <input type="file" multiple="multiple" name="file[]" /> 
    <input type="submit" name="upload" value="Submit"/> 
</form> 
<div id="output"></div> 

这是我工作的Javascript代码:

$(document).ready(function(){ 
    $('.upload').click(function(){ 
     $(this).trigger($('input[type=file]')); 
     return false; 
    }); 

    $('input[type=file]').change(function() { 
     $('#myForm').ajaxSubmit({ 
       target: '#output' 
     }); 
    }); 
}); 
+0

可能重复(http://stackoverflow.com/questions/1133058/emulate-a-file-upload-click-in-jquery) – BradleyDotNET

回答

18

不能使用style="display:none;"使用style="visibility:hidden;"

,我改变了触发点击:

$('.upload').click(function(){ 
    $('input[type=file]').click(); 
    return false; 
}); 


REAS oning

输入字段不会被发送到服务器display:none,但将与visibility:hidden

+0

得到它!谢谢! – laukok

+0

JavaScript为我工作。但你能告诉我为什么它的工作,只是一个简单的$(“input [type = file]”)。click()不会? –

+0

@PrakashRaman,我加了一点推理。 – Joe

2

乔的方法是正确的。但是,此解决方案仅适用于某些浏览器。它适用于Chrome和Firefox,但不适用于Opera,Safari或Android Galaxy S内置浏览器(截至2012年6月23日当前版本已经过测试)。出于安全原因,这些浏览器可能会禁用通过JS触发上传按钮。

如果我发现所有现代浏览器

+0

您是否找到了解决方案?我有类似的问题,需要找到适用于各种浏览器的东西。 – newshorts

+2

不是(10个字符) – Neal

3

你为什么不使用标签,而不是一个可行的解决方案,我会更新这个帖子?那么你可以使用for属性。

<style type="text/css"> 
    #file_upload { 
    visibility: hidden; 
    } 
</style> 
<a href="#" class="upload"> 
    <label for="file_upload">upload</label 
</a> 
<form action="upload.php" method="post" enctype="multipart/form-data" id="myForm"> 
    <input id="file_upload" type="file" multiple="multiple" name="file[]" /> 
    <input type="submit" name="upload" value="Submit"/> 
</form> 
<div id="output"></div> 
的[效法文件上传点击jQuery中]
相关问题