7

髪を引っ張ります。シンプルな jQuery メソッドが Safari 6 で機能しません。

次のコード ブロックは、Safari 6 を除く、私がテストした他のすべてのブラウザーで動作します。Safari 5 以前では問題なく動作し、Firefox でも問題なく動作し、IE でも問題なく動作します。Chromeでも問題なく動作します。

アラートは Safari 6 でポップアップするため、関数は引き続き起動されますが、他の 3 つの方法では何も起こりません。

----- 更新 ----- 複数のマシンでさらにテストした結果、Mac OSX 10.8 の Safari 6 でのみ動作しないことがわかりました。このコードは、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');
    });
});
4

2 に答える 2

1

私は間違っているかもしれませんが、JavaScript が実行される前にフォームが送信されることが問題だと思います。それが起こらないようにするには、 preventDefault を使用する必要がある場合があります。ボタンを送信ボタンから type="button" に変更することもできます。これも役立ちます。おっと...クイック編集..また、フェードインが発生した後に実行されるように、アラートをコールバックに入れました...そのままにするか、変更することができます。

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

    });
});
于 2012-12-17T18:42:18.747 に答える
0

(クリックの代わりに).submit()evnetを使用できます。$('form')。bind('submit'、function(){... Code ...});
ただし、ファイルをアップロードしようとしているので、いくつかのajaxテクニックまたはjqueryプラグインを使用することをお勧めします。
ajaxを使用したファイルのアップロードに関する優れたチュートリアルがたくさんあります(Googleを使用) 。これは、私が気に入っているNettuts+ajaxファイルのアップロード
からのチュートリアルです。

于 2012-12-17T18:52:23.320 に答える