2011-08-20 49 views
3

這個作品在FF6和IE 7,8和9,而不是瀏覽器/ Safari瀏覽器和Opera:點擊文字鏈接時如何打開文件上傳提示?

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> 

    <script type="text/javascript"> 
     $(function() { 

      $('#uploadFile').click(function(e) { 
       $('#fileUploadField').click(); 
       e.preventDefault(); 
      }); 

     }); 
    </script> 

    <input type="file" name="something" style="display: none" id="fileUploadField" /> 
    <a href="" id="uploadFile">Upload File</a> 

我猜這是因爲瀏覽器的安全限制。有誰知道任何跨瀏覽器解決方案來實現這一目標嗎?

回答

7

您不能調用點擊隱藏元素,這是一個安全限制。改爲使用opacity: 0代替display: none。這似乎工作。

這是fiddle。我看到Win 7上的FF6,Win 7/Mac OS X 10.6.8上的Chrome 13和Mac OS X上的Safari 5的文件選擇對話框10.6.8

+0

Awsome,不知道不允許調用點擊隱藏的規則。而不是我使用的不透明度:visibility:hidden;位置:絕對的;因爲opcity是一個css3屬性,因此在 JC23

1

即使沒有「display:none」在IE8下工作。只要您單擊提交,IE8將刪除文件輸入字段中的數據並且不提交表單。嘗試下面的代碼爲PHP:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
    <head> 
    <title>IE8-Test</title> 
    <script type="text/javascript" src="js/jquery-1.6.4.min.js"></script> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
    <script type="text/javascript"> 
     $('#btn').live('click', function(){ 
     $('#file').click(); 
     }) 
    </script> 
    </head> 
    <body> 
    <form action="test.php" method="POST" enctype="multipart/form-data"> 
     <input id="file" type="file" name="image" class="image"/> 
     <div id="btn">Click me to do a js click on the input type=file button.</div> 
     <input id="submit" type="submit" name="formsubmit" value="Upload"/> 
    </form> 
    <br/> 
    <br/> 
    <br/> 
    <?php 
     if(isset($_POST['formsubmit'])){ 
     echo '<div>POST-Data</div>'; 
     echo '<pre>'; 
     var_dump($_POST); 
     var_dump($_FILES); 
     echo '</pre>'; 
     } 
    ?> 
    </body> 
</html>