2012-10-01 27 views
3

我有一个奇怪的问题,这让我很头疼......下面的代码在Firefox中完美地工作,但在Mac OS上不在Safari中。jQuery无法在表单提交中运行在Safari上

我想在文件上传时显示简单的“加载消息”。所以,我的网页看起来是这样的:

<!doctype html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title></title> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script> 
     <script> 
      $(document).ready(function() { 
       $('#upload').on('submit', function() { 

        $("#loading").fadeIn(); 

       }); 

      }); 
     </script> 
    </head> 

    <body> 
     <p id="loading" style="display:none">UPLOADING...</p> 


      <form name="upload" id="upload" method="post" action="upload.php" enctype="multipart/form-data"> 
       <input type='file' name='file[]' multiple/> 
       <input type="submit" value="Upload..."/> 
      </form> 

    </body> 
</html> 

在Firefox中,“上载...”行显示了当文件被transfering我upload.php的前上传。在Safari上,“上传...”行不显示,并且一旦文件上传,它会将我转移到upload.php。

如果这在Safari中不受支持,我该如何实现完全相同的功能?

谢谢你的帮助!

+0

是绑定语法是否正确?到目前为止,我知道它会像'$(document).on('submit','#upload',function(){})' – HungryCoder

+0

我刚刚注意到完全相同的行为......听起来更像是一个bug如果你问我,用safari。 – gamov

+0

刚刚遇到这个,听起来像是Safari的问题。 – IcyFlame

回答

3

好吧,我得到它的工作...

取而代之的是“提交”按钮,我的ID改成了一个“按钮” =“发送”。我修改剧本首先显示上点击p标签,然后添加的形式在回调提交像这样:

<script> 
      $(document).ready(function() { 

       $("#send").click(function() { 

        $("#loading").fadeIn(function() { 
         $("#upload").submit(); 
        }); 

       }); 

      }); 
</script> 

而且它在所有浏览器现在的作品。在IE,FF,Chrome和Safari中测试。

+0

这不是推荐的方法!但这是由你:) – HungryCoder

+6

错......很好,但你会不会分享推荐的方式,然后呢? – ilovebigmacs

+0

这是您的初始实施。但只是想知道safari问题。 – HungryCoder