2012-12-17 68 views
7

工作不拉我的頭髮。簡單的jQuery方法不是在Safari 6jQuery方法在Safari 6

在所有其他瀏覽器下面的代碼塊的工作,我已經除了Safari瀏覽器6,工作在Safari 5的罰款和老年人,在Firefox罰款,罰款在IE測試工作。它在Chrome中也可以正常工作。

警報彈出確實在Safari 6,所以功能仍然開火,但沒有與任何其他3種方法發生。

----- ----- UPDATE上 幾臺機器進一步測試之後......我發現,它不但不能在Safari 6工作中的Mac OSX 10.8。該代碼在OSX 10.7的相同版本的Safari中正常工作。 --------------------

我運行的jQuery 1.8.3。我的頁面驗證爲HTML5。

HTML:

<div id="fileUploadFormContainer"> 

    <form id="fileUploadForm" action="/upload/do_upload/<?=$row->project_id?>" method="post" enctype="multipart/form-data" > 
     <fieldset> 
     <label for="userfile">Attach a file</label> 
      <input type="file" name="userfile" id="userfile" /><br /> 
      <input type="submit" id="fileUploadSubmit" value="Upload file" /> 
      <img class="loadingBar" id="fileUploadLoadingBar" src="/images/indicators/ajax-loader.gif" alt="" /> 
     </fieldset> 
    </form> 
</div><!-- end fileUploadFormContainer --> 

CSS:

.loadingBar { 
    display: none; 
} 

的JavaScript:

$(function(){ 
    // Submit Buttons 
    $('#fileUploadSubmit').click(function() 
    { 
     $('#fileUploadSubmit').attr('value', 'Uploading'); 
     $('#fileUploadSubmit').fadeTo('fast',0.6); 
     $('#fileUploadLoadingBar').fadeIn('fast'); 
     alert('Finished'); 
    }); 
}); 
+1

你有什麼錯誤嗎? –

+0

我在這些行中看到的唯一奇怪的事情是'$(...)。attr('value','上傳');'。通常你會使用'$(...)。val('上傳');'(或者你可以使用'prop')。但是我敢打賭,attr'無論如何都可以工作,無論如何,這並不能解釋衰落...... –

+1

很高興看到來自新SO成員的**問題**。好一個! –

回答

1

我可能是錯的,但我覺得你的問題是表單提交前JavaScript是運行。您可能需要使用preventDefault來防止發生。您也可以將您的按鈕從提交按鈕更改爲type =「按鈕」,這也可以幫助您。糟糕...快速編輯..我也把你的警報放在一個回調中,以便它在fadeIN發生之後運行......你可以離開或更改它。

$(function(){ 
    // Submit Buttons 
    $('#fileUploadSubmit').click(function(e) 
    { 
     e.preventDefault(); 
     $('#fileUploadSubmit').attr('value', 'Uploading'); 
     $('#fileUploadSubmit').fadeTo('fast',0.6); 
     $('#fileUploadLoadingBar').fadeIn('fast', function() { 
      alert('Finished'); 
     }); 

    }); 
}); 
+0

感謝您的建議。剛剛嘗試過,不幸的是它沒有解決問題。由於這隻發生在OSX 10.8中,並且在我嘗試過的所有事情之後,我開始認爲這可能與操作系統或Safari的此特定版本有關? –

+0

沒問題......那很奇怪。它在Safari 6.0.2(10.8.2)中並不適合我,但是通過我所做的修改,它工作正常......當然,需要添加更多的代碼來提交表單(或使用.submit而不是.click),或者執行下一步中的任何操作,但確實解決了方法(效果)未運行的問題。 – kevindeleon

+0

如果我將輸入類型從「提交」更改爲「按鈕」,那麼我的jQuery也按預期工作。但這是一個轉折點。一旦我添加'$('#fileUploadForm')。submit();'到我的函數結束時,表單現在將提交...但問題又回來了,其餘的方法不起作用。奇怪的! –

0

您可以使用.submit()evnet(而不是點擊)。 $( '形式')綁定( '提交',函數(){...代碼...})。
但是,因爲你正在嘗試上傳文件,我會推薦使用一些Ajax技術,或者一個jQuery插件。
有使用AJAX(使用谷歌)
這裏是一個從Nettuts+ ajax file uploading我喜歡在文件上傳很多很好的教程。

+0

謝謝...我已經試過了。它仍然無法在OSX 10.8的Safari 6中運行。 我已經改變了我的功能 \t'$( '#fileUploadForm')。BIND( '提交',()的函數 \t { \t \t $( '#fileUploadSubmit')。ATTR( '值', '上傳'); \t \t $( '#fileUploadSubmit')fadeTo( '快',0.6); \t \t $( '#fileUploadLoadingBar')淡入( '快');。 \t});' –