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",这也有帮助。哎呀...快速编辑..我还将您的警报放在回调中,以便它在 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');
        });

    });
});
于 2012-12-17T18:42:18.747 回答
0

您可以使用 .submit() evnet(而不是单击)。$('form').bind('submit',function(){...代码...});
但是因为您正在尝试上传文件,所以我建议您使用一些 ajax 技术和/或 jquery 插件。
有很多关于使用 ajax 上传文件的不错的教程(使用 google)
,这里有一个来自Nettuts+ ajax 文件上传的我喜欢的教程。

于 2012-12-17T18:52:23.320 回答